Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
20
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

@daxanya1

Hubotで通知系メッセージを送る

Hubotはチャット専用botなので、基本的に誰かの発言に対して応答を返すような仕組みが充実しています。

で、ふと気づくのです。bot側から自発的に話すのってどうするだろうと。

今日はそんな話です。(別に哲学的な話ではないです)

参考スクリプト

http-say.coffeeを参考にしようとしましたが、これこのまま使った方が早いので、こちらを見てください。

もうこれで動くのですが、実際試したら動かすのに微妙に苦労したので、そちらの話を続けます。

botが自発的に話すためのスクリプトを運用する

とりあえず話を簡単にするために、自分のMacでnode.jsを動かしてその上でhubotが動いている前提とします。hubotの接続先はhipchatとします。

http-say.coffeeの使い方は

GET /hubot/say?message=[&room=<room>&type=<type>]

と書いてあるのですが、node.jsのlistenポートを調べて、直接WEBブラウザから

http://localhost:8080/hubot/say?message=test

と打ち込んでも反応しません。

roomパラメータは必須なのかと思い、room名を直接入れてみますがこれも反応しません。

どうも、XMPP JIDがroomパラメータとして必要なようです。これを調べる簡単な方法はあるのでしょうか。

今hubotがいるroomのXMPP JIDを調べる

一番簡単なのが、hubotがすでにその部屋にいるのであれば、次のコマンドを打つ事でXMPP JIDがわかります。@hubotは適宜hubotにつけている名前で置き換えてください。

@hubot show storage

これはhubot内のstorage情報をチャット画面上に表示するhubotのコマンドです。
この情報の中に、

{ users:
'544000':
{ id: '544xxx',
jid: '76xxx_544xxx@chat.hipchat.com',
name: 'hubot',
mention_name: 'hubot',
room: '76xxx_xxxx@conf.hipchat.com' } },

というhubot自身の情報が入った部分があります。このroomをそのまま貼付けると、ようやくhubotの発言としてmessageパラメータの内容が出力されるようになりました。

http://localhost:8080/hubot/say?message=test&room=76xxx_xxxx@conf.hipchat.com

これで、定期的な通知内容や天気情報等もhubot経由でしゃべらせられるようになりますね。

よいhubotライフを!

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
20
Help us understand the problem. What are the problem?