imoniの開発Blog

    前回、LINE の Messaging API を有効にするところまでしました。

    今回は、プログラムでプッシュ送信ができるところまでやりたいと思います。


    目次


    LINE Developersでボットを設定する

    前回、ボットを登録した ページから始めます。

    登録したボットを選択します。

    ボットの設定画面が表示されます。

    「メッセージ送受信設定」で「アクセストークン」の「再発行」を押します。

    「アクセストークンを再発行しますか?」というメッセージが表示されるので、 「再発行」を押します。

    表示された「アクセストークン」の文字列をメモします。

    「その他」の「Your userId」の値もメモします。

    プッシュ送信テストの送信先に利用できる自分のLINEのIDです。


    LINEボットを友達登録

    LINE Developers のページで、QRコードが表示されているので、 それをスマホのLINEアプリでスキャンして友達登録します。

    友達登録ができたら、登録時のメッセージが送られてきます。

    これで、プッシュ送信したときは、プッシュしたメッセージがこちらに表示されます。


    PHPでプッシュ送信

    では、プッシュ送信のプログラムをPHPで書きたいと思います。

    LINE API リファレンス に、 APIの使い方が書いてあります。

    また、各言語用のSDKも用意されているので、そのコードを解析して、必要な部分を参考にしていきます。

    ということで、以下のようなコードになります。

    <?php
    // HTTPヘッダを設定
    $channelToken = 'メモした アクセストークン の文字列';
    $headers = [
    	'Authorization: Bearer ' . $channelToken,
    	'Content-Type: application/json; charset=utf-8',
    ];
    
    // POSTデータを設定してJSONにエンコード
    $post = [
    	'to' => 'メモした Your userId の文字列',
    	'messages' => [
    		[
    			'type' => 'text',
    			'text' => 'hello world',
    		],
    	],
    ];
    $post = json_encode($post);
    
    // HTTPリクエストを設定
    $ch = curl_init('https://api.line.me/v2/bot/message/push');
    $options = [
    	CURLOPT_CUSTOMREQUEST => 'POST',
    	CURLOPT_HTTPHEADER => $headers,
    	CURLOPT_RETURNTRANSFER => true,
    	CURLOPT_BINARYTRANSFER => true,
    	CURLOPT_HEADER => true,
    	CURLOPT_POSTFIELDS => $post,
    ];
    curl_setopt_array($ch, $options);
    
    // 実行
    $result = curl_exec($ch);
    
    // エラーチェック
    $errno = curl_errno($ch);
    if ($errno) {
    	return;
    }
    
    // HTTPステータスを取得
    $info = curl_getinfo($ch);
    $httpStatus = $info['http_code'];
    
    $responseHeaderSize = $info['header_size'];
    $body = substr($result, $responseHeaderSize);
    
    // 200 だったら OK
    echo $httpStatus . ' ' . $body;
    

    「メモした アクセストークン の文字列」「メモした Your userId の文字列」には、 先ほどメモした値を入れます。

    上記のコードを実行してみると

    プッシュしたメッセージがトークに表示されました!


    さて次回は、ボットへ送信したメッセージに対する応答を返せるようにしたいと思います。


    Pythonでプッシュ送信 (2018年02月10日追記)

    ちなみにPythonで書くと

    """LINE Push"""
    import json
    import requests
    
    # HTTPヘッダを設定
    HEADERS = {
        'Content-Type': 'application/json',
        'Authorization': 'Bearer ' + 'メモした アクセストークン の文字列',
    }
    
    # POSTデータを設定
    POST = {
        'to': 'メモした Your userId の文字列',
        'messages': [
            {
                'type': 'text',
                'text': 'hello world'
            }
        ]
    }
    
    # 実行
    CH = 'https://api.line.me/v2/bot/message/push'
    REQ = requests.post(CH, headers=HEADERS, data=json.dumps(POST))
    
    # HTTPステータスが 200 だったら OK
    print(REQ.status_code)
    if REQ.status_code != 200:
        print(REQ.text)
    

    という感じですね。


    コメント

      コメントを投稿する