見出し画像

HerokuとPHPでLineのDB接続されたチャットボットを作る1(まずはじめにーおうむ返し編)

自分が忘れない様にするため、今までしたことを整理するためにまとめる。

前にdialogflowでチャットボットを作ってたことがあったけど、データベース接続がうまくできなくて挫折。

その他にもNode Redとかでもやってみたけどなかなかできず。

それから数ヶ月経ち、その間に色々と知識を増やしてくうちに、「あれ?今ならできんじゃね?」って思ったのがきっかけ。

とりあえず第一段階の目標としては

レストランの名前(曖昧検索も可)を送ったら住所が帰ってくるBot

を作ることに。

東南アジアのタクシー生活だと、タクシー呼ぶときとか、人と集合するときにいちいちgoogle map開いたりするのがめんどくさかったので、完全に自分が楽するため。

ざっと段階としては

1. 簡単なBotの作成(おうむ返し)
2. データベース接続
3. 曖昧検索等の処理
4. 返信処理

登録から実装まで

まずはHerokuへの登録、そしてLine Messaging APIを使うためにLine Developer への登録が必要。

Herokuとはクラウドでアプリケーションの開発、実行、運用がクラウド上でできるサービス。これがあれば基本的に自分でサーバー借りたりドメイン取ったりしなくていいのでかなり楽。

そしてLine Developer、用はラインの開発者様アカウント。

これでBot用のアカウントとかを作ったりできる。

あとはSDK(ざっくりテンプレート的なもの)も使える様になるので簡単にできる様になる。

イメージとしては、PHPをローカルで書き、Herokuに登録して、Botようアカウントを動かす。(Botを動かすのはあくまでPHPでHerokuはあくまで中継)

そして肝心のおうむ返しBotの作り方は

ここに書いてある通りにやればOK。

登録から全部書いてある。

ちょっと気になったところ

ローカルでPHP書いた後にHerokuへあげる際に、gitが必要になるので、gitのインストールだけ必要。「git インストール」で検索すればいける。

またこの先必要になるものとして、覚えておいたほうがいいのはHerokuへのコミット・プッシュ。

$ git commit -am "make it better"
$ git push heroku master

一個めの -am "make it better"に関してはただのコメントだからそこの部分は別に書かなくても良さげ?

とにかく、今後更新した際には上記の2コマンドをターミナルに打ち込めばOK。

あと、ちょっとややこしかったのが

$channelAccessToken = '<your channel access token>';
$channelSecret = '<your channel secret>';

ここを自分のに変更してねーってことだけど、<your channel access token>のカッコの中だけじゃなくて、カッコごと変更(カッコの削除?)する必要があり。

若干の解説

返信の内容を決めてる部分がWebhook.php(基本的に編集するのはこっち)のこの部分。

$client->replyMessage(array(
    'replyToken' => $event['replyToken'],
    'messages' => array(
        array(
            'type' => 'text',
            'text' => $message['text']
        )
    )
 ));

返信内容は'text' => $message['text']で決まる。

現在$messageが送られてきた文を格納しているところなので、その$messageから['text']を抜き出して返信にあてる。($messageの中には['type'](送られてきたものの種類『スタンプ、文章、写真等』)も入ってる。)

なのでここを

$client->replyMessage(array(
    'replyToken' => $event['replyToken'],
    'messages' => array(
        array(
            'type' => 'text',
            'text' => 'こんにちは'
        )
    )
 ));

'text' => 'こんにちは'

に変えると、何言ってもこんにちはしか言わないやばいBotができる。

次回はデータベース接続。

チャットボット系のサイトを死ぬほど漁ったけど、なかなかデータベースの活用まで書いてあるところなかったから、なんかの役に立つことを祈って。

続き:



この記事が気に入ったらサポートをしてみませんか?