5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

LINE Messaging API(プッシュメッセージ)をAzure Functionsで試してみた

Posted at

やってみたこと

LINE Messaging APIのプッシュメッセージを、Azure Functions(Node.js)を使ってやってみました。
LINE公式アカウン x Azure でプッシュメッセージを使った配信の情報があまり多くなかったのと(チャットボットを作ってる記事が多い)、LINE公式アカウントでのメッセージ配信を自動化したかったので、Azure Functions(Node.js)を使って試した内容をメモしておきます。用途的に、公式アカウントのすべての友だち(1対多)に配信したかったので、サンプルではブロードキャストメッセージを使用しています。

全体の流れ

  1. LINE公式アカウント作成(アクセストークンも取得) *事前準備(今回は割愛)
  2. Visual Studio CodeでAzure Functionsの開発環境の準備 *事前準備(今回は割愛)
  3. Azure Functionsのプロジェクト作成
  4. LINE SDK(Node.js)のインストール
  5. ソースコード
  6. ローカル環境での動作確認
  7. Azure Functionsへのデプロイ
  8. Azure環境での動作確認

*LINE公式アカウントの開設やVisualStudioCodeの環境構築などは割愛して、最後に参考にしたページを記載しておきます。

詳細

###Azure FunctionsのProjectを作成
今回は、Node.js環境を使用するので、サンプルは言語はJavaScriptを選択してください。
image.png

###とりあえず、サンプルで動作確認
とりあえず、サンプルのままでStart Debugging[F5]で実行してみます。ローカル環境で動作が確認出来たら一安心です。
image.png

###LINE SDKのインストール
LINE公式ページを参考にSDKをインストールします。

$ npm install @line/bot-sdk --save

ソースコード

「channalAccessToken」はLINE Messaging APIのアクセストークンを記載します。Channalに投稿されるメッセージは、クエリーで渡せるようにしています。

index.js
const line = require('@line/bot-sdk');

const client = new line.Client({
    channelAccessToken: '<channel access token>'
});

module.exports = async function (context, req) {
    context.log('JavaScript HTTP trigger function processed a request.');

    if (req.query.message || (req.body && req.body.name)) {

        message = {
            type: 'text',
            text: req.query.message
        };
    
        client.broadcast(message)
        .then(() => {
            // ...
        })
        .catch((err) => {
            // error handling
        });

        context.res = {
            // status: 200, /* Defaults to 200 */
            body: "Hello " + (req.query.message || req.body.name)
        };
    }
    else {
        context.res = {
            status: 400,
            body: "Please pass a name on the query string or in the request body"
        };
    }
};

ローカル環境でのテスト

[Start Debugging(F5)]を実行すると、URLがターミナルに表示されますが、クエリーで[message]を渡してやると、LINEのchannelにメッセージが届くことを確認できると思います。

http://localhost:7071/api/HttpTriggerLineMessagingApiTest?message=test

Azure Functionsへのデプロイ

詳細は割愛しますが、Azure Functionsへデプロイすると、完了です。
image.png

デプロイ先のサブスクリプションを右クリックするとAzure FunctionsのURLが取得できるので、ブラウザでアクセスして、クエリーに[message]を入れることで、LINEのChannelにプッシュメッセージを送ることが出来るようになります。
image.png

やってみて

LINE × Azureの組み合わせだと、チャットボットの例は割と見かけたのですが、一方向のプッシュメッセージの例があまりなかったので、試しにやってみました。LINEの公式アカウントアプリとかでも配信は可能ですが、自動化しておきたい配信などがあれば、サーバーレスなAzure Functionsと連携すると便利な時もあるかと思います。

参考

・Visual Studio Codeを使ってAzureで関数を作成する
https://docs.microsoft.com/ja-jp/azure/azure-functions/functions-create-first-function-vs-code?pivots=programming-language-javascript

・LINE SDKまわり
https://github.com/line/line-bot-sdk-nodejs

5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?