4
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

updated at

Node-REDのTwitter botでリプライ形式にする

Node-REDでtwitterボットを作る際に(正しく?)リプライ形式でツイートする方法のメモです。
単純なTweetやメンションによるメッセージ送付はサンプルがあちこちにあるのですが、受け付けたTweetに対するリプライを返す手順については見当たらなかったので、ここにまとめておきます。

ここでのリプライ形式とは、本家twittetサイトにて、当該ツイートをクリックした際にきちんと連結して表示されることをいいます。

連結したツイート

twittet出力ノードの前にfunctionノードで下記のように、冒頭でのメンションと、msg.paramsを付けることでリプライになります。

twitter-bot-nodes.png

function:リプライ化
msg.payload = "@" + msg.tweet.user.screen_name + " " + msg.payload;
msg.params = {
    in_reply_to_status_id: msg.tweet.id_str
}

ポイントは、in_reply_to_status_id_strではなく、in_reply_to_status_idがパラメータになることと、そこに入れる値は逆にmsg.tweet.idではなくmsg.tweet.id_strであるということです。

なんか、気持ち悪い感じがしますが、msg.tweet.idには正しい値が入らず、丸め込まれて下二桁が0になってしまっているからです。また、ソースを追ったところ、この値はpostされるまで参照されることはなく、リクエストパラメータに渡されるので、本来整数が入るべきところに文字列として入っていても問題なく、エラーにもなりません。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
4
Help us understand the problem. What are the problem?