SSブログ
クラウドを個人が使う ブログトップ
- | 次の10件

【AWS】AWSとDoCoMoでLINEのbot [クラウドを個人が使う]

※注 DoCoMo自然対話APIは2018/11/1で提供中止‥雑談対話サービス「かたらい」に変えろとのこと。
追記2019/1/4 新:【AWS】AWSとDoCoMoでLINEのbot https://okiba.blog.so-net.ne.jp/2019-01-04-1
↑が更新版。

◆Docomo 雑談対話API対応
なるほどそういうのもあるのか。これも書かれたとおりにやってみる。
・DoCoMo「新規API利用申請へ」はやたら意識が高い。こっちはただ適当にLINEボットを作りたいだけなのに。仕方がないのでいろいろでっち上げる。大きな声で言うことでもないが、住所や名前や電話番号など、まじめに書きますかそうですか。
で、いろいろうるさいわりにAPI keyは一瞬で発行される。
・DynamoDBテーブルも書かれている通り。キャパシティセットは5もいらないはず(多分)。
・改めて別のFunctionを作る。
コードはコピペ。だが注意。もちろんそのままでは動かない。
「DoCoMoのAPI keyをセットする」ところ。そこをセットする。
「DynamoDB TableNameをセットする」ところ。そこをセットする。
「LINEのChannel Access Tokenをセットする」ところ。そこをセットする。
あと、LINE developersでは、別のビジネスの登録を行って、それを使うほうがいいと思う。今のはせっかく動いているんだから壊すことはない。バージョン変えればできるっぽいけど。
「Lambda の IAMロールに DynamoDB へのアクセスを許可するポリシーを追加」
これがわりと難物。IAMのサービスに飛んで、設定する。どれをセットしたらいいのかよくわからないからLambdaとDynamoDBから適当に選ぶ。なんでもいいので動けばOK。
◆難所
「コードはzipファイルでアップロード」「requestモジュールを同梱」これがまた難物。
windows10環境でもnode.jsはinstallできる。npmも同時にinstallされる。
https://nodejs.org/ja/
コマンドプロンプトからnodejsと叩いて、npm install request でrequestモジュールが落ちてくる。但し今回の場合C:\直下にが出来たのは本来の動きなのか?
出来たnode_modulesのフォルダーと、作ったコード(index.jsという名前にしておく)をまとめてzipかけて、画面からアップする。
その後コードを画面から直したら動かない。必ずzipアップロードの手順を踏む。
慣れればたいした手間ではない。
◆でも動かない
動かない。DOCOMOまでは行っている。DynamoDBもどうやら書き込んでいるがreceive_idがおかしい。
原因はここ↓
if (!event_data.events[0].source.groupId){
receive_id = event_data.events[0].source.userId;
} else {
receive_id = event_data.events[0].source.groupId;
}
roomIdで来た場合、receive_idがセットできない。
if文並べて、
event_data.events[0].source.roomId を判断に付け加えればOK。
これで動いた。やれやれ。
なお、botはわりと中途半端な返答をする。
1.jpg

【AWS】AWSでLINEのbot(注あり) [クラウドを個人が使う]

※注 DoCoMo自然対話APIは2018/11/1で提供中止‥雑談対話サービス「かたらい」に変えろとのこと。
追記2019/1/4 新:【AWS】AWSとDoCoMoでLINEのbot https://okiba.blog.so-net.ne.jp/2019-01-04-1

◆AWSでLINEのbot
単にAWSでWordpress立ち上げて、日記サイトやらなにやら立ち上げてもだからどうということもない。so-netから引っ越すのも手だが。まあそれはそのうち。
ちょうど、CodeZineに、「誰でも簡単にできる! LINE Botの作り方
https://codezine.jp/article/detail/9810
とあったので、いろいろ調べてみた。なお、このCodeZineというサイト、なかなか不思議な作りをしている(2016/12/12現在)。
「開発者のための実装系マガジン」とのことで、そういうことも出来ますよ的ななにかなのだろうか。

◆「その通りにやればいいじゃん」的な
まあそれはそうなんだが、PHP環境を作るのはともかく、HerokuのID取るのもなんだかな。そこまでしてbotかよ、AWSだけでなんとかなるだろ、という気分なので、別を探す。
これではまるでキュレーションサイト。

LINE BOT APIを使ってAWS Lambdaでサーバレスな版画風写真加工BOTを作る(Node.js)
【朗報】LINE BOT の Server IP Whitelist がOptionalになってた
【PHP】LINE Messaging APIで田村ゆかりさんの公式サイト更新通知BOTを作りなおした #yukarin
と、いろいろあるが、なるほどよくわかっているなと思わせるこちらのサイトに全面に従うことに。おせわになります。
LINE Messaging API と AWS Lambda で LINE BOT を作ってみた
http://www.kazuweb.asia/aws/lambda/chatbot
少しのことにも、先達はあらまほしき事なり

◆書いてある通りにやれば出来るというものではない
それほど甘くない。途中まで一緒だが、
・「Lambda Functionを登録する」--いきなり画面が違う。
当該記事は2016/10/11付なので、わずか2ヶ月で変わったということ。この界隈では別に珍しいことではない。一番左上を選べばいいみたい。
・「Existing role」は既存の「lambda_basic_execution」、とあるが、もちろん一番初めは「既存」は存在しないので、Createする。

・「LINE developers 画面にて発行できる Channel Access Token」とあって、え?それはなんだ、となる。LINEで先に発行しておく。{}は不要なことは言うまでもない。

以上に気をつければわりとあっさり動く。
これだけでは味気ないので、はじめのほうの
"text":"はろーわ~るど"
のところを変数にして、乱数でいろいろしゃべらせるとか、条件分岐するとかするとかなりそれっぽくなる。

【AWS】AWS 初歩の初歩 [クラウドを個人が使う]

◆AWS 初歩の初歩
変転極まりなく常に進化するamazon殿であるから、解説本やらサイトやらに書かれている内容はともかく、画面キャプチャは現行とはそこそこ違っている。
セミナーなどに通わないでお勉強しようとする人なら、それくらい自分で何とかするだろうとう想定だろう。
まずはじめるにあたって、当然AWSのアカウントが必要となる。これはちょっとやってみると、実はamazon.com つまりUSの.comのアカウントを使うようだ。これは持っているのでそのまま使う。アカウントがバラけるのは(そのうち忘れるので)よろしくない。カードは休眠状態にある某銀行系にしたが、プリペイド系のお財布pontaでも、COCOKARAでもOKのはず。
登録すると電話で確認が来る。どうと言うことはない。

◆チャレンジ
叩くコマンドはsudo だの yum だのなので、気分の問題で、せっかく作ったMintを使う。いまさらWin10にTeraTerm入れるのもちょっと。
あとは参考文献どおりに順番にコマンド叩いたり、画面入力したりだけの話。作業ゲーム。DBあたりになると、いくらawsが速いといっても、一旦「作成」とやると、数分かかるのがリアル。
簡単にWordPressが立ち上がり、さらにロードバランサー入れて、フロント2台 x RDB2台体制にまで約4時間。簡単。
最後にサイトを抹殺するのに若干時間がかかる。このへん出来ればあっさり消したい。

◆コンテンツ/構成の同期は?
ただ、これだと、コンテンツ変更をフロントにそれぞれやらないと食い違うので、実用とするには、デプロイの仕組みを入れる必要があるだろう。ステージングを作って、そこからコピーするのかと思いちょっと検索。
「アクセスが集中したら自動でサーバー増やします」までは設定できそうだけど、画面レイアウトやら中身やらを同期を取って全部置き換えるのはそこそこ工夫がいる?参考サービスとして
AWS Elastic Beanstalk https://aws.amazon.com/jp/elasticbeanstalk/
AWS OpsWorks https://aws.amazon.com/jp/opsworks/
AWS CloudFormation https://aws.amazon.com/jp/cloudformation/
‥これじゃamazonの回し者だ。
AWS Elastic Beanstalkが一番簡単そう。全く素人でもやれば出来る気がする。と思ったがもう全部消しちゃったしな。

◆すごすぎる。
つまりは、中身は別として、そこそこの企業情報サイトの外側は1日で出来てしまうとなると、かなりのエンジニアはAWSに合わせて勉強しなおさないとダメそう。いろいろ手作りで設定したい向きには不満だろうけど。
「チャレンジ」と書いたが、それほどでもない。むしろ前段のLinux Mint18のUSBメモリー立ち上げのほうがよっぽど手間。


- | 次の10件 クラウドを個人が使う ブログトップ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。