オウム返し返信をしてくれるtwitterボットをnode.jsで作ってみた。
参考URL
http://engineer.recruit-lifestyle.co.jp/techblog/2015-07-21-node3/
将来的には、専用クライアントをインストールせずに、つぶやきを拾って自動返信してくれるサービスとか流行りそうやね。
電話やメールなどに較べて、twitterでつぶやくだけだから、使う側の敷居も大分下がるのがデカい。
そして今は、新しいtwitterアカウントを作成するにSMS受信できる電話番号が必要なのね…。世知辛い世の中になってきたな~。
まあ、こんなこともあろうかとiPhone6の格安SIMはSMS付きにしておいたので、それを使う。
twitter APIを使うための設定とか色々と行う。
https://apps.twitter.com/
ワンコインVPSには、以前にnode.js動作環境を作っておいたので、サンプルがすぐに動いた。
node.jsは新しいサーバサイド言語だけあって、30行程の簡単な記述で自動返信twitterボットが作れるなんて素晴らしい!!
まあ、VPSなど常時起動サーバで走らせ続ける必要があるけどね…。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
// twitterモジュールを読み込み( npm install twitter ) var twitter = require('twitter'); // アプリ登録時に取得したkeyを入れてOAuth認証し、初期化 var client = new twitter({ consumer_key: 'xxxx', consumer_secret: 'xxxxx', access_token_key: 'xxxxx', access_token_secret: 'xxxxx' }); // Public APIのstatuses/filterで取得したタイムラインを、自分のアカウント名を含む文字列でフィルターする client.stream( 'statuses/filter', { track : '@ボットのユーザID' }, function( stream ) { // フィルターされたデータのストリームを受け取り、ツイートのテキストを表示する stream.on( 'data', function( data ) { var text = data.text; // ツイートのテキスト var textCleaned = '@' + data.user.screen_name + text.replace( /@ボットのユーザID/g, "" ); // アカウント名は不要 console.log( textCleaned ); // 相手に対してオウム返しの返信投稿(パラメータにツイートIDを指定する。文字列型でないとダメみたい…。) client.post( 'statuses/update', {status: textCleaned, in_reply_to_status_id: data.id_str}, function(error, tweet, response) { if (!error) { console.log("ok, reply.") } } ) }); }); |
ツイートに@相手のユーザIDを含ませるだけでは返信にならないみたい…。もうちょい調べてみないと。
これが上手く行けば、twitterを使った会話ボット(人工無脳)が出来そう。
ただ、いきなり作るのは難しいから、パラグラフ番号を使ったゲームブック形式あたりから始めてみよう。