ボットの登録~プログラム~APIセットまでが、完了しましたので実際に動くか確認してみましょう。
動作確認
テレグラムで「saishonobot(ボットのユーザー名)」と検索します。
すると「初めてのボット製作」というボットが見つかるので、開いてみましょう。
ボットの画面が開くので、「START」を押します。
前回までの手順が正しく設定できていれば、/start コマンドが起動して、ボットから自動で「Hello」と返ってきます。
ここで何も反応がない場合は、どこかで問題が発生している可能性があります。
(サーバーの取得、ドメインやSSLの設定をした直後は、反映までに時間がかかる場合もあります)
カスタムキーボードと自動返信の確認
Hello Botのプログラムが動いている場合は、カスタムキーボードで「Hello」「Hi」のボタンが表示されます。
「Hello」を押すと、Helloとメッセージが送信され、ボットからNice to meet youと返ってきます。
「Hi」を押すと、Hiとメッセージが送信され、同じくボットからNice to meet youと返ってきます。
メッセージ欄に直接「できたよ!」と打って送信してみます。
リプライでCoolと返ってきます。
今度はステッカーを送ってみます。
I understand only text messages(テキストしかわからない)と返ってきます。
以上でHello Botの基本機能の確認が完了です。
コードの理解とカスタマイズ
ボットが問題なく動いていることを確認したら、プログラム側でどのようなコードになっているかを確認して、簡単なカスタマイズを試してみましょう。
今回のボットは、テキストを送るとテキストが返ってくる簡単な仕組みとなっています。
そのあたりの処理は、このprocessMessageというメソッドで管理しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
function processMessage($message) { // process incoming message $message_id = $message['message_id']; $chat_id = $message['chat']['id']; if (isset($message['text'])) { // incoming text message $text = $message['text']; if (strpos($text, "/start") === 0) { apiRequestJson("sendMessage", array('chat_id' => $chat_id, "text" => 'Hello', 'reply_markup' => array( 'keyboard' => array(array('Hello', 'Hi')), 'one_time_keyboard' => true, 'resize_keyboard' => true))); } else if ($text === "Hello" || $text === "Hi") { apiRequest("sendMessage", array('chat_id' => $chat_id, "text" => 'Nice to meet you')); } else if (strpos($text, "/stop") === 0) { // stop now } else { apiRequestWebhook("sendMessage", array('chat_id' => $chat_id, "reply_to_message_id" => $message_id, "text" => 'Cool')); } } else { apiRequest("sendMessage", array('chat_id' => $chat_id, "text" => 'I understand only text messages')); } } |
それ以外の長々と書いてある部分は、ボットに命令を送る処理などになります。
とりあえず裏側の部分はひとまず置いておいて、簡単なテキストのやり取りをする処理を書き換えてみましょう。
1 2 3 |
'keyboard' => array(array('Hello', 'Hi')), //↓書き換え 'keyboard' => array(array('Hello', 'Hi', 'Nice to meet you, too', 'Good', 'Bad')), |
これでカスタムキーボードにボタンが追加されます。
そして、メッセージを返す部分の処理が必要になりますので、
1 2 |
} else if ($text === "Hello" || $text === "Hi") { apiRequest("sendMessage", array('chat_id' => $chat_id, "text" => 'Nice to meet you')); |
この部分をコピーし追加して、条件とテキスト内容を書き換えます
1 2 3 4 5 6 7 |
//Nice to meet you, too を送信したときの処理 } else if ($text === "Nice to meet you, too") { apiRequest("sendMessage", array('chat_id' => $chat_id, "text" => 'How are you?')); //Good を送信したときの処理 } else if ($text === "Good") { apiRequest("sendMessage", array('chat_id' => $chat_id, "text" => 'Nice!')); |
ちなみに、”sendMessage”の部分はメソッドと呼ばれる部分で、公式のAPIページに詳しく載っています。
試しにメッセージ以外を返す処理を書いてみましょう。
1 2 3 |
//Bad を送信したときの処理 } else if ($text === "Bad") { apiRequest("sendPhoto", array('chat_id' => $chat_id, "photo" => 'http://blog-imgs-72-origin.fc2.com/m/a/p/maplab/rain1_animated_256.gif')); |
ここではBadと入力されたら、画像を返す処理を入れてみました。
メソッド部分を”sendPhoto”にして、パラメーターの”text”を削除し”photo”に画像のURLを指定してみます。
以上を書き換え保存して、再度アップしてみましょう。
プログラムを書き換えた場合、ファイルのパスさえ変わらなければ、APIの再セットは特に必要ありません。ファイルをアップするだけで更新されます。
変化がない場合は、/startと入力して、新しく開始するとカスタムキーボードの設定などが反映されると思います。
カスタマイズ部分の確認
カスタムキーボードにボタンが追加されています。
ボタンが一列に並び、狭くて文字が全て表示されないので、調整しましょう。
1 2 3 4 5 6 7 |
'keyboard' => array(array('Hello', 'Hi', 'Nice to meet you, too', 'Good', 'Bad')), //↓書き換え 'keyboard' => array( array('Hello', 'Hi'), array('Nice to meet you, too'), array('Good', 'Bad') ), |
これでボタンが3列で表示され、きれいに表示されます。
Nice to meet you, too を送信すると、ちゃんとHow are youと返ってきました。
Good と返すと、Niceと返ってきます。
Bad と返すと、画像が返ってきました。
※画像はマップラボ様よりお借りしました。
以上、最初のボットの簡単なカスタマイズでした。
上手く処理を考えれば、いろいろなことができそうですね。
「ボットの動作確認と簡単なカスタマイズ」に関するコメント
チャットIDやグループIDの取得の仕方がわからない。。。
webhookが設定されていると取得できないから、外して過去ログ?からチャットIDは取得できたけど、過去にボットが返してくれたダイレクトチャットのIDしか取れなかった。。。
グループチャットのIDの取り方が分からん( ゚∀゚)・;’.、グハッ
グループIDの取得方法が知りたいです><
同じくチャットIDやグループIDの取得の仕方が分かりません。
ご教授願いますm(_ _)m