LINE Messaging API を試してみた / Push Message - 大人の自由研究

大人の自由研究 ホーム » iPhone/iPad » LINE Messaging API を試してみた / Push Message

LINE Messaging API を試してみた / Push Message



 LINE に メッセージが送れる。しかも、Messaging API Developer Trial は無料で利用が出来る。
 こちら→https://business.line.me/ja/services/botを御覧ください。
 
 早速、大人の自由研究を!

 API Referenceに情報が載っている。
 各言語のSDKが用意されているようだ。
 ・Java
 ・PHP
 ・Go
 ・Perl
 ・Ruby
 また、各APIの呼び出しなど、右側にサンプルも表示されるので親切。
 shellのサンプル見れば、簡単だって事も理解できる。

 例えば、メッセージを送りつける、Push Message は以下の通りです


curl -X POST \
-H 'Content-Type:application/json' \
-H 'Authorization: Bearer {ENTER_ACCESS_TOKEN}' \
-d '{
"to": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"messages":[
{
"type":"text",
"text":"Hello, world1"
},
{
"type":"text",
"text":"Hello, world2"
}
]
}' https://api.line.me/v2/bot/message/push


 POSTで送るだけ。


 PHPでSDKを使えば、わずか数行で、メッセージ配信が可能。


$httpClient = new \LINE\LINEBot\HTTPClient\CurlHTTPClient('{channel access token}');
$bot = new \LINE\LINEBot($httpClient, ['channelSecret' => '{channel secret}']);

$textMessageBuilder = new \LINE\LINEBot\MessageBuilder\TextMessageBuilder('hello');
$response = $bot->pushMessage('{to}', $textMessageBuilder);

echo $response->getHTTPStatus() . ' ' . $response->getBody();


 では、早速、SDKを導入して、上のサンプルを使って、メッセージの送信を試みる事に。

 <channel access token> と <channel secret> は、LINE@ MANAGER のBot設定 から、LINE Developersへ遷移して、取得が可能。
 そして、<to>に送信先識別子を指定。さて、この、送信先識別子とは?LINEのIDか?
 とりあえず、LINEのIDを指定して、実行するも。。。エラー。
 Fatal error: Call to undefined method LINE\LINEBot\Response::getBody()
 getBody()が定義されてないと!
 サンプルコピペしただけなのに(汗)

 ソース Response.php を覗いてみると、確かに getBody() は定義されておらず、、、getRawBody()を発見w
 って事で、サンプルソースを修正して実行。

 400 {"message":"The property, 'to', in the request body is invalid (line: -, column: -)"}

 to の指定した値がおかしいのか。。。
 ここから、さっぱり進まず(汗)

 LINE@ MANAGER とかで、友達登録している人のIDとか見れないものかと思ったけど、なさそう。。。
 :
 :
 :
 :
 :
 とりあえず、Push Message は諦めて、Reply Messageを試してみよう!!

 受信したメッセージに対して処理を行って、リプライする事が出来る。
 PHPサンプルはこちら。

$httpClient = new \LINE\LINEBot\HTTPClient\CurlHTTPClient('{channel access token}');
$bot = new \LINE\LINEBot($httpClient, ['channelSecret' => '{channel secret}']);

$textMessageBuilder = new \LINE\LINEBot\MessageBuilder\TextMessageBuilder('hello');
$response = $bot->replyMessage('{replyToken}', $textMessageBuilder);

echo $response->getHTTPStatus() . ' ' . $response->getBody();

 またしても、getBody()になっているので getRawBody() に変更。


 その前に、メッセージを受信した時に、コールされるURLを、LINE Developers管理画面の Webhook URLに指定する必要がある。

 その時に受け取るJSONデータがこちら


{
"events": [
{
"replyToken": "nHuyWiB7yP5Zw52FIkcQobQuGDXCTA",
"type": "message",
"timestamp": 1462629479859,
"source": {
"type": "user",
"userId": "U206d25c2ea6bd87c17655609a1c37cb8"
},
"message": {
"id": "325708",
"type": "text",
"text": "Hello, world"
}
},
{
"replyToken": "nHuyWiB7yP5Zw52FIkcQobQuGDXCTA",
"type": "follow",
"timestamp": 1462629479859,
"source": {
"type": "user",
"userId": "U206d25c2ea6bd87c17655609a1c37cb8"
}
}
]
}


 ふと、気づいた!
 ここにある userId が 送信先識別子 か!?

 という事で、試しに、受信したJSONをファイルへ落とすだけのPHPを作り、Webhook URLに指定。
 で、自分のuserId を調べてみた。

 その userId を先ほどの、Push Message のサンプルPHPに入れてあげるとーー
 なんと、メッセージの送信が出来ました!
 toに指定する送信先識別子 は LINEのIDでは無く、「U」+ 32Byte の文字列である
 という事が判明したw


 自分で作ったプログラムから、LINEへメッセージが送信出来るって、ちょっと感動w
 今回はここまで。
関連記事
スポンサーサイト
コメント
非公開コメント

トラックバック

http://ukkey3.blog33.fc2.com/tb.php/682-f0bb7959