2019-06-02に更新

botでシフト情報を返信するサンプル

サーモンランAPIを使って、シフト情報を返信するbotを作る方法をご紹介します。

指針

今回は、metabirdsというbot作成サービスを利用します。
metabirdsでは、Twitter・LINE・Facebookメッセンジャー・Discord・Skype・Google Homeなど、様々なサービス上でbotを作ることができます。

metabirdsには、外部のJSONファイルを利用して返信をする機能があります。そこで、サーモンランAPIを利用してbotに返信させてみます。

動作

LINEで動作させてみたところ、こんな感じになりました。

IMG_6383.PNG

IMG_6390.PNG

「今のサーモンランは?」「次のサーモンラン」などと送ると、そのシフト情報を返信で返します。
打つのが面倒だったので、リッチメニューを使った入力補助も付けてみました。

ここではLINEで試しましたが、設定すればTwitterなど他のサービスでも同様に動作します(しています)。
同じbotを複数のサービスで展開できるのもmetabirdsの強みです。

作り方

まずはmetabirdsに登録しましょう。
登録したら、管理画面の「@返信ボット」というページを開きます。

「反応ワード」の設定

反応ワードでは、正規表現を使うことができます。
今回は、「やあ、今のサーモンランを教えて」「今やってるサーモンラン」などの入力を想定し、「今.*サーモンラン」としましょう。

正規表現では、「.」は任意の1文字を表し、「*」はその1つ前の文字が無い、もしくは無限に連続することを表します。
ですから、「.*」というのはその部分に何が入っても一致することを表しています。

「返信メッセージ」の設定

返信メッセージでは、「置き換えタグ」という機能を利用して複雑な出力をすることができます。
ここでは、こんな感じで入力してみました。

キャプチャ.PNG

{@}
【第{json:0,num:https://splamp.info/salmon/api/now}回】

日時︰{utstrftime:{json:0,start:https://splamp.info/salmon/api/now}:%-m/%-d %-H:00} 〜 {utstrftime:{json:0,end:https://splamp.info/salmon/api/now}:%-m/%-d %-H:00}
場所︰{json:0,stage_ja:https://splamp.info/salmon/api/now}

<支給ブキ>
・{json:0,w1_ja:https://splamp.info/salmon/api/now}
・{json:0,w2_ja:https://splamp.info/salmon/api/now}
・{json:0,w3_ja:https://splamp.info/salmon/api/now}
・{json:0,w4_ja:https://splamp.info/salmon/api/now}

[https://lmp.tw/sch](https://lmp.tw/sch)

置き換えタグについては、metabirdsのヘルプにBotbird置き換えタグ一覧というページがありますが、ざっくり説明しておきます。

{@}

かつてのTwitterで返信するときに必要でした。Twitter以外では無視されます。

{json:パラメータ:参照URL}

パラメータでは、カンマで区切ることで下層の指定をすることができます。
例えば、[0]['num']を指定したいときは「0,num」となります。

{utstrftime:UnixTime:汎用時刻format}

UnixTimeで指定された時刻を、汎用時刻formatで指定された形式で出力します。
metabirdsでは入れ子ができるので、ここではUnixTimeの部分に先ほどのJSON置き換えタグを指定しました。
汎用時刻formatでは、strftime関数で指定できる変換指定子を指定できます。
ちなみに、metabirdsのヘルプページではPHPリファレンスを参照先として紹介していましたが、実際はRubyで使われる構文として解釈されるようです。そのため、PHPにはありませんが、「%-m」「%-d」「%-H」のように指定すると、先頭の0が除去された値(01→1など)を指定できます。

最後に貼ったリンクは、サーモンランのシフト一覧ページです。

次のサーモンランも表示

上のやつで今のサーモンランは表示できたので、次のサーモンランも表示できるようにしましょう。
JSONのパラメータ部分を変えるだけです。

反応ワード

次.*サーモンラン

返信メッセージ

{@}
【第{json:1,num:https://splamp.info/salmon/api/now}回】

日時︰{utstrftime:{json:1,start:https://splamp.info/salmon/api/now}:%-m/%-d %-H:00} 〜 {utstrftime:{json:1,end:https://splamp.info/salmon/api/now}:%-m/%-d %-H:00}
場所︰{json:1,stage_ja:https://splamp.info/salmon/api/now}

<支給ブキ>
・{json:1,w1_ja:https://splamp.info/salmon/api/now}
・{json:1,w2_ja:https://splamp.info/salmon/api/now}
・{json:1,w3_ja:https://splamp.info/salmon/api/now}
・{json:1,w4_ja:https://splamp.info/salmon/api/now}

[https://lmp.tw/sch](https://lmp.tw/sch)

LINEで動かしてみる

Twitterについてはアプリ連携するだけで動くと思います。

LINE APIとの接続方法についてはmetabirdsのヘルプをお読みください。

LINEのリッチメニュー

なんかボタンが出てきてそれを押すと勝手に文字が送信されるやつはリッチメニューと言います。
[email protected]でアカウントを選択し、「リッチコンテンツ作成」を押すと作成できます。

botの動作確認をしたいときは、LINE Developersのチャネル基本設定ページの下のほうにあるQRコードを使って友達追加をして、トーク画面を開くことができます。

その他

metabirdsで一度作ってしまえば、Twitter・LINE・Facebookメッセンジャー・Discord・Skype・Google Homeなど、様々なサービス上でそのbotを動かせます。
必要なのはトップページのAPI連携だけ!

metabirdsでできることは他にもたくさんあります。この記事がAPI活用の参考になりましたら幸いです。

ツイッターでシェア
みんなに共有、忘れないようにメモ

view_list サーモンランAPIサンプル集
第1回 バイトの開催情報を画面に表示するサンプル
第2回 botでシフト情報を返信するサンプル

ウラル

Splatoonの二次創作サイト「スプランプ」の管理人です。サーモンラン研究所やオクトチャット、フェス速報などを作りました。

Crieitは個人で開発中です。 興味がある方は是非記事の投稿をお願いします! どんな軽い内容でも嬉しいです。
なぜCrieitを作ろうと思ったか

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください!

ボードとは?

関連記事

コメント