LINE BOT

しりとり⇔雑談モード切替

しりとり⇔雑談モード切替 しりとりモードにする 開始トリガー「しりとりしよう」を受信する。 Template Messageのボタンで「しりとりする/雑談する」を表示する。 ユーザが「しりとりする」を選択する。 ユーザメッセージが「message」ではなく「postback」…

雑談APIと しりとり をしたい

しりとりモードを追加する modeにsrtrを指定 function chat($text) { // docomo chatAPI $api_key = 'xxxxxxxxxxxxxxxx'; $api_url = sprintf('https://api.apigw.smt.docomo.ne.jp/dialogue/v1/dialogue?APIKEY=%s', $api_key); $req_body = array( 'utt' =…

会話にならない

公式リファレンスが"使える"ことを知ってほしい docomoAPI Reference 会話の文脈"context"を保持しなければならない 現段階では毎回「見知らぬ誰か」に話しかけられている。 ユーザメッセージと一緒に、前回の会話の文脈を渡すことで「前回こういう会話をし…

雑談APIを導入しよう!

docomoが提供する雑談対話APIとは 雑談対話APIは、ユーザの発話テキストを受け付け、その入力に対して自然な会話となる雑談を提供します。 データの流れ 導入の流れ docomoAPI利用申請 雑談対話API申請 API key取得 callback.phpを編集する docomoAPIへユー…

複数のメッセージを返したい

LINE Referenceによると5つまで返すことができる コード例 BOT「Hello」 BOT「world.」 $post_data = array( "replyToken" => $reply_token, "messages" => array( array( "type" => text, "text" => "Hello", , array( "type" => text, "text" => "world."…

LINE BOTでボタン選択肢を出したい

LINE APIのTemplate Messageを使う 今まで使っていたのはReply Message。 Template Messageもデータの流れは同じ。 LINE APIに渡す情報が異なる。 LINE API Referenceの Template Messageの仕様 サンプルをそのまま表示させてみる ボタンを書き換える 画像を…

LINE BOTで「本当によろしいですか?」フォームを出したい

LINE APIのTemplate Messageを使う 今まで使っていたのはReply Message。 Template Messageもデータの流れは同じ。 LINE APIに渡す情報が異なる。 LINE API Referenceの Template Messageの仕様 サンプルをそのまま表示させてみる 日本語に書き換えてみる $p…

コードをきれいにしよう

コメントを付ける 他人(自分も)にコードの意図が伝えるため コードのかたまり/区切りが目で見てすぐわかるため 関数に分ける 何度も行う処理を、一度だけ書いて済ませるプログラムの書き方 値の受け渡しができるので、一つの機能を共通で使える 関数は「何か…

ユーザからのスタンプの意味を理解した返答を返したい

ユーザメッセージのスタンプのIDを抜き出す $textや$typeのように、$stickerIdを抜き出す 無料スタンプのID一覧を照合する 例: packageIdが1で、srtickerIdが1のスタンプに対して「眠いのか」と返す ID毎に返答を変える(if文の入れ子) 例: if($packageId…

ユーザメッセージの種類(文字、画像、スタンプ等)によって返答を変えたい

ユーザメッセージの種類は"type"で見分けられる if文で分岐させて返答を用意する

LINE BOTから画像やスタンプを返したい

LINE APIとやり取りするjson(情報の塊)の中身に着目! ※ファイルにjsonを出して見る テキストと一緒に渡している"type"があやしい LINEAPIとのやり取りなので、LINEAPIの仕様を見てみる(LINE Reference) https://devdocs.line.me/ja/ 画像を返す urlとty…

ユーザメッセージ「元気?」と「げんき?」に対して同じ返答をする

特定の文字列が含まれているかチェックする② preg_match() preg_matchはマッチした場合は1を返し、 マッチしなかった場合は0を返す。 [書き方] $text = "abcd"; if(preg_match('/bc/', $text)){ //$textのなかにbcが含まれている場合 } if(!preg_match('/bc/…

ユーザメッセージ「元気?」と「お元気ですか?」に対して同じ返答をする

特定の文字列が含まれているかをチェックする① strpos() 該当する文字列が見つかった位置を数値で返し、 該当する文字列が見つからなかった場合は、falseを返す。 [書き方] $text = "abcd"; if(strpos($text,'bc') !== false){ //'abcd'のなかに'bc'が含まれ…

変数に何が入っているのかを見たい

外部ファイルにログを出して確認する [書き方] error_log($msg, 3, '/var/www/html/line/log.txt'); jsonの中身 decodeして配列を変数にいれる error_log関数の引数に配列を入れる $json_string = file_get_contents('php://input'); $json_obj = json_decod…

LINE BOTの返答パターンを増やしたい(ランダムに返す)

if文で拾えないユーザメッセージに対してランダムに返答する いくつかの返答パターンを記憶する 記憶した返答パターンからランダムに選んで返答する いくつかの返答パターンを記憶する 配列 変数を並べて通し番号をつけたもの。通し番号のことを「添え字」を…

LINE BOTの返答を場合分けしたい

「元気?」と聞かれたら「元気だよ」と返答したい ユーザ「元気?」 BOT 「元気?じゃねぇよ!!」 プログラムは基本的に上から下へ流れます。 途中で「AならCという処理、BならDという処理」というように、処理を分けたい場合が出てきます。 そのようなときは…

ユーザメッセージの語尾に「じゃねぇよ!!」をつけて返したい

※BOTのキャラクターを近藤春菜だとする 文字列(文字の集合)に文字列をくっつける LINE Messaging APIへの返答部分を変更する。 [書き方] "文字列"."文字列" PHP: 文字列 - Manual Ctrl+Fで「結合」検索する

変数とは…?

変数とは 変数とは、コンピュータに値を記憶させるための「入れ物」。 例えば、人間が「1+2」という計算をするとき 一つ目の数字(「1」)を「覚える」という処理をしている。 (図書くとよい) しりとりをするときは、、ひとつ前の単語を覚えている。 …

LINE BOTの仕組み

LINE BOTが返答するまでの道のり LINE BOTがユーザのメッセージを受けてから返答するまで、どのような道のりをたどるのでしょうか。 ユーザ(私)がLINEでメッセージを送る(例えば「おはよう」) 「おはよう」がLINE Messaging APIに渡る 「おはよう」がxxx.p…

オウム返しBOTを動作させる手順

オウム返しをするLINE BOTを作成します。 準備(環境構築) 以下を各自PCにインストールする(クリックするとダウンロードページに飛びます) 。 WinSCP Sublime text 3※日本語化はあとで Chrome サーバーを用意する(済) 研修用に用意してもらいました。 L…

LINE BOTのざっくりとした説明

LINE BOTとは? LINE社が提供するbot機能を持つアカウント。 ●bot機能とは? robot(ロボット)の短縮形・略称で、転じてコンピュータやインターネット関連の自動化プログラムの一種のこと。 簡単に言うと… LINEで自動返信とかできるアカウントを自分で作れ…