LINE Bot APIのファーストステップをLambda+API Gatewayでやってみたらものすごく簡単で驚いた
トライアル当初はホワイトリストのしばりや、初回反応するまで時間がかかったりとみなさん困っていたようですが、遅ればせながらやってみると色々解消されているようで、すさまじく簡単に、Botのハローワールド、Lチカともいえるオウム返しが確認出来ましたので一応メモ。
本記事の情報は2016/8/14時点のものです。
目次
Lambda(Python)のコード
GitHubはこちらです。
1 2 3 4 5 6 7 8 9 |
LINEBOT_API_EVENT ='https://trialbot-api.line.me/v1/events' LINE_HEADERS = { 'Content-type': 'application/json; charset=UTF-8', 'X-Line-ChannelID':'xxxxxxxxxxx', 'X-Line-ChannelSecret':'xxxxxxxxxxxxxxxxxxxx', 'X-Line-Trusted-User-With-ACL':'xxxxxxxxxxxxxxxxxxxxxx' } |
Headersの各値
LINE Developersのアカウント画面からコピペします。
- X-Line-ChannelID : チャンネルID
- X-Line-ChannelSecret : チャンネルシークレットキー
- X-Line-Trusted-User-With-ACL : チャンネルMID
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
msg = event['result'][0] text = msg['content']['text'] from_id = msg['content']['from'] content = { 'contentType':1, 'toType':1, 'text':text } send_msg = { 'to':[from_id], 'toChannel':1383378250, 'eventType':'138311608800106203', 'content':content } post_response = requests.post(LINEBOT_API_EVENT,headers=LINE_HEADERS,data=json.dumps(send_msg)) logger.info(post_response) |
bot宛に送信されたメッセージをevent[‘result’][0]で取得してます。
textにメッセージ内容とfrom_idにLINEのIDを取得してます。
- to : 150ユーザーが上限の配列
- toChannel : 1383378250が共通固定値
- eventType : ‘138311608800106203’が共通固定値
- contentType : 1 Text,2 Image,3 Video,4 Audio,7 Location
- toType : 1 toUserそれ以外は不明
LambdaとAPI Gatewayの設定
何も特別な事はいりません。
上記のコードをrequestsモジュールとまとめていつものようにzipをアップロードするだけです。
API Gatewayもレスポンスやリクエストの設定は何も変更していません。
LINE側の設定
Callbak URLにAPI GatewayのエンドポイントURLを指定します。
が、そのままではセキュリティがだめ、って怒られるので、ポート番号443をつけます。
具体的には、「amazonaws.com」を「amazonaws.com:443」ってします。
これだけでオウム返しが出来ました。
この先は送信されたメッセージをどう扱うか、
どういった内容を送信するか、
コーディングしてけばいいと思います。
最後までお読みいただきましてありがとうございました!
【PR】 「AWS認定試験対策 AWS クラウドプラクティショナー」という本を書きました。
【PR】 「AWSではじめるLinux入門ガイド」という本を書きました。
【PR】 「ポケットスタディ AWS認定 デベロッパーアソシエイト」という本を書きました。
【PR】 「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル」という本を書きました。

開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
-
AWS Systems Manager セッションマネージャを使用するために必要な設定
AWS Systems Manager セッションマネージャを使用するために必要 …
-
-
AWS Backupで取得したAMIとスナップショットの削除
個人で使っているAWSリソースの断捨離をしてました。 Cloud9も複数アカウン …
-
-
Amazon S3オブエジェクトへのリクエストをCloudTrail, Athenaで識別
こちらCloudTrail を使用した Amazon S3 リクエストの識別に書 …
-
-
AWSアカウント内のLambda関数を削除するLambda(Python)
やりたいこと 特定のAWSアカウントの特定リージョンのAWS Lambda関数を …
-
-
JAWS-UG関西「AI で人を笑わせてみよう!ハンズオン」に参加しました
AI で人を笑わせてみよう!ハンズオン 灼熱の7月最終日にJAWS-UG関西のオ …
-
-
EC2 Instance Connect向けのセキュリティグループのソースにプレフィックスリストを
EC2 Instance Connect、便利ですね。 キーペア不要で、EC2イ …
-
-
RDSリザーブドDBインスタンスを購入しました
リザーブドインスタンス推奨事項を確認したで確認した結果、購入したほうがよさそうで …
-
-
EC2 Image BuilderでRocket.ChatのAMIを作って起動テンプレートを更新しました
EC2 Image Builderの練習をしようと思い、Rocket.Chatの …
-
-
AWS Storage Gateway File Gateway on EC2インスタンスにmacOSからNFS接続
S3バケットの作成 S3バケットはあらかじめ作成しておきました。 マネジメントコ …
-
-
AWS LambdaでChrome HeadlessドライバをAWS Lambda Layersから使う
この記事はSelenium/Appium Advent Calendar 201 …