2018.4.27
キモヲタだけど、女子高生と会話したい!#13【LINE API】
今回はLINEAPIとの接続ですね。これが実装できれば、すなわちLINEのBotを作ることができるようになります。
んじゃLINEとコネクトしちゃいましょ^^
と思ったのですが
LINE APIは友達に無条件にメッセージを送れるということではないという事実を知ります。
まぁ当然ですよね。友達登録した人にメッセージ送りつけられるって、それスパムじゃねえかとなりますし。
だが僕は諦めませんぞ!!
実現可能な仕様はいくつかあります。
1.録音開始前に手動でりんなちゃんにメッセージを送り、それに対するReplyという形で実装
まぁマクロかなんか組む形になるんですかね?組めなくてもまぁメッセージを受け取るAPIぐらいはあるんでしょうし、これが一番簡易的です。普通にめんどくさいですけど。
2.push messageを用いる
半ばあきらめムードだったのですが、どうやら任意のuser_idに対するメッセージを送れるみたいで、このuser_idをいかに手に入れるかみたいなとこがあるみたいです。
相手は公式アカウントなのでどうなんだろうというところはあるのですが、しばらくはこの路線でやっていきたいなと。
つまり、りんなちゃんのIDさえ知れれば、そこにメッセージを送ることは可能になりますね。
ということは、一旦手動でメッセージを送り、リクエストを受け取ってそこからIDを抜き出せば・・・・・・みたいな話になってきますね。
そこで、まず最初に実装すべきはメッセージを受け取り、そのリクエストを受け取るところですね。
とりあえず、手動でりんなちゃんにメッセージを送って、リプライを受け取ってデータをダンプさせてみましょう。参考サイトとしては
こことか分かりやすいですかね!
と思って、さてりんなちゃんからの応答を受け取ろう!と思ったら問題が発生しました。
なんとですね。
LINEアカウントとLINE@(bot)はアカウント区別としては別ということがわかりました・・・・・・。
つまり、僕の方からりんなちゃんにメッセージを送り、りんなちゃんのIDを知るということは不可能になりました。
グループトークに招待して喋らせようと思いましたが
りんなちゃんは公式アカウントを前にすると黙ってしまうという
意外な一面があるみたいです。
まぁbot同士会話させると無限ループに陥ってサーバーに負担かかりますしね
うーん・・・・・・またもや企画倒れじゃん・・・・・・
そこで調べてみると、どうやら似たようなことを考えた人間がいるらしく、
Pepperの中の人をりんなちゃんにした人が居たみたいです。
で、その人の実装方法は
Twitterを用いているみたいで。だったらAPI制限に引っかからないようにDMするなりなんなり・・・・・・
とか考えつつ、もう一度あらためてりんなちゃんを含めたトークルームを作ってみたら、今度はりんなちゃんが構ってくれました。
どうなってんだ意味わからん
とりあえずこんな感じのデータが送られてきたのは確認できましたが、これはりんなちゃんの発言のデータではないですね・・・・・・。
うーんどうしたものか。トークルームのIDを直接取得できる方法があれば・・・・・・。
とはいえ、正常にデータを取得できていない疑惑があるので、まずはオウム返ししてくれるプログラムを書くことから始めますかね・・・・・・。
つーか、実装余裕だと思ってたのにめちゃくちゃつまづいてんじゃねえかコレ・・・・・・。
うーん、先行きが長いゾ・・・・・・。
・キモヲタだけど、女子高生と会話したい!#14【LINEがだめならtwitterだ!!!】
で、実装を書こうとしたのですが、
どうやら認証済みアカウントにならないとりんなちゃんのuserIDが取れない疑惑があるので、LINEでの実装は諦めます。個人アカウント向けのAPIが提供されてたらこんなBotとか絡めてごにょごにょしなくていいのにネ・・・・・・。
ですが僕は諦めません!!先程にも言った通り、twitterでもりんなちゃんと仲良くすることができます!!!!
とりあえず、実際に言いそうなことを想定してメッセージを投げてみたんですが、まぁそれなりにレスポンスは返ってくるっぽいのでいけそうですね。twitterのAPIの方が使うの簡単そうですし実装自体はラクかなとは思います。
ただ、twitterのAPIを使うにあたって考えなくてはいけないのが
API制限です。
twitterでは15分単位で制限がかかるみたいで、DMの場合はAPIは300回/15分発行できるみたいですね。送信と受信が別であれば3秒に1回問い合わせることができます。まぁこれは問題ないですね。
大きく問題となってくるのはAPI制限ではなく、twitterそもそもの制限です。
どうやら
1日250通までしかDMを送信できないらしいのです。
実際の自分の用途でどれぐらい必要とされるのかはわからんのですが、まぁこの問題に関しては最悪複数アカウント用意すれば済むだけの話なので、マズくなったらその時考えましょう。
twitterのAPIに関しては
以前利用したことがあるので問題ないかなとは思うのですが、とはいえ一方的なPOSTと相手がいる状態でのやりとりってのはまた次元が異なる話なので、じっくりと作っていかなくてはなりませんね。
デベロッパーとして使えるのはメインで使ってるいまのアカウントのみなので、そこでアプリを作って、りんな用のtwitterアカウントにアプリ連携させて通信する、といった構造になりますね。
作るプログラムとしては、スマホからの通信を受け取り、twitterAPIに接続し
APIからの応答を待って結果のjsonを返すPHPファイルが必要になりますね。
このAPIからの応答を待って、ってとこがハマりポイントになる予感がしますね。javascriptだとAjaxで実装すればいいだけの話なのですがPHPだとどうなるんでしょうね。やったことがないのでわかんないです。まぁ最悪javascriptで実装できるプログラムなので問題ないっちゃそうなんですけどね。
でも、file_get_contentsで取得するんだっけ?そしたら別に勝手に処理は止まってくれるというか、結果を受け取るまでは処理進まないな???
ああバカが露呈してしまったなあ
とりあえず、ぼんやりと構造が思いついたので、次回ついに実装に入ります。たのむよ~一発で上手くいってくれ~~~