LINEユーザーにメッセージを送付する
このページでは、KurocoとLINEのMessaging APIを連携し、KurocoからLINEユーザーにメッセーを送信する方法を説明します。
概要
Kuroco には LINEユーザーに対してメッセージを送信する機能が備わっています。 具体的には、LINE Messaging APIを用いて、KurocoからLINEへメッセージを送信するような命令を送る事で、ユーザーにメッセージが送信されます。 メッセージの送信はカスタム処理に該当する記述を行う必要があります。
LINE公式アカウントへの友だち追加時に、LINEユーザーIDでKurocoへのユーザー登録(ログインする権限はなし)を行い、トリガー機能を使ってKuroco内のさまざまなイベントをトリガーとし、任意のタイミングで任意のユーザーにLINEメッセージを送信出来ます。
学べること
以下の手順で、KurocoからLINEユーザーにメッセージを送信します。
- 概要
- LINE Developersコンソールでチャネルを作成する
- LINEの接続設定をする
- Kurocoの管理画面からLINEとの連携をする
- LINE公式アカウントの友だち追加時のWebhookからLINEユーザーIDを取得する
- Kuroco のカスタム処理を使ってユーザーにメッセージを送信する
前提条件
LINE公式アカウントへの友だち追加時に送信されるWebhookを利用して、LINEユーザーIDを取得します。
LINEアカウントを使ってKurocoにメンバー登録する方法として、OAuth連携機能を利用することも可能です。
詳しくはLINE公式アカウントの友だち追加時のWebhookからLINEユーザーIDを取得するのヒントをご確認ください。
LINE Developersコンソールでチャネルを作成する
まず、LINE Developersコンソールにてチャネルを作成する必要があります。LINEアカウントを持っていない場合はLINEアカウントを作成してください。
LINE Developersコンソール にログインしてください(初回ログイン時のみ、開発者として登録するか否かを尋ねられるので、開発者として登録してください)。
次に新規プロバイダーを作成します。「作成」ボタンをクリックしてください。
プロバイダー名を指定します。ここでは「KurocoSampleProvider」とします。
つづいて、チャネルを作成します。「新規チャネル作成」をクリックしてください。
チャネルの種類は「Messaging API」を選択してください。
新規チャネル作成画面に遷移します。
以下のように各項目を入力し「作成」ボタンをクリックしてください。
項目名 | 入力値 |
---|---|
チャネルの種類 | Messaging API |
プロバイダー | 前述の手順で作成したプロバイダーを指定してください。 |
会社・事業者の所在国・地域 | 法人の場合は会社の所在国・地域を、個人の場合は店舗や居住地の所在国・地域を選択してください。 |
チャネルアイコン | チャネルのアイコンとなる画像をアップロードしてください。 |
チャネル名 | チャネル名を指定してください。 |
チャネル説明 | チャネルの説明を入力してください。 |
大業種 | 大業種を選択してください。 |
小業種 | 小業種を選択してください。 |
メールアドレス | このチャンネルの管理者となる方のメールアドレスを入力してください。 |
LINE公式アカウント利用規約 | 内容を確認の上、チェックを入れてください。 |
LINE公式アカウントAPI利用規約 | 内容を確認の上、チェックを入れてください |
確認のダイアログが表示されますので、問題なければ「OK」をクリックしてください。
作成すると、以下のようにチャネルが表示されます。クリックして詳細情報を確認してください。
以上で、チャネルが作成できました。
チャネルIDは後述で使用しますので控えておいてください。
LINEの接続設定をする
次にKurocoとLINEの接続設定を行います。
まず、公開鍵・秘密鍵のペアを準備し、先ほど作成したチャネルの設定画面にて公開鍵を登録する必要があります。
公開鍵・秘密鍵のペアを作成する方法はいくつかありますが、お使いのウェブブラウザがWeb Crypto API に対応している(たとえばGoogle Chromeブラウザなどの)場合、SubtleCrypto.generateKey() メソッドを使って秘密鍵と公開鍵を生成できます。 ここではGoogle Chromeを例に公開鍵・秘密鍵の作成方法を説明します。
Google Chromeを起動し、ブラウザのデベロッパーツールを開きます。
JavaScriptコンソールに以下のコードを入力して実行(エンターキーを押下)します。
(async () => {
const pair = await crypto.subtle.generateKey(
{
name: "RSASSA-PKCS1-v1_5",
modulusLength: 2048,
publicExponent: new Uint8Array([1, 0, 1]),
hash: "SHA-256",
},
true,
["sign", "verify"]
);
console.log("=== private key ===");
console.log(
JSON.stringify(
await crypto.subtle.exportKey("jwk", pair.privateKey),
null,
" "
)
);
console.log("=== public key ===");
console.log(
JSON.stringify(
await crypto.subtle.exportKey("jwk", pair.publicKey),
null,
" "
)
);
})();
成功すると以下のような秘密鍵と公開鍵が生成されます。
秘密鍵の例
{
"alg": "RS256",
"d": "B6A6he..........",
"dp": "ogd_VFa..........",
"dq": "qt9TJZV..........",
"e": "AQAB",
"ext": true,
"key_ops": [
"sign"
],
"kty": "RSA",
"n": "wQoAaMQmz..........",
"p": "92ODEIUZY..........",
"q": "x8ItprfI7..........",
"qi": "kfmYirMr.........."
}
公開鍵の例
{
"alg": "RS256",
"e": "AQ..........",
"ext": true,
"key_ops": [
"verify"
],
"kty": "RSA",
"n": "wQoAaMQm.........."
}
先ほど作成したチャネルの設定画面にてアサーション署名キーの横にある[公開鍵を登録する]ボタンをクリックします。
作成した公開鍵を入力します。[登録]ボタンをクリックします。
公開鍵の登録に成功すると、kidが表示されるのでコピーして控えてください。
Kurocoの管理画面からLINEとの連携をする
次にKuroco管理画面へ移動し、[外部システム連携] -> [LINE]に遷移します。
[LINE]欄の「有効にする」にチェックを入れ、上述で控えたチャンネルID、秘密鍵、アサーション署名キー(kid)を入力して[更新する]をクリックください。
以上でKuroco側の設定は終わりです。
LINE公式アカウントの友だち追加時のWebhookからLINEユーザーIDを取得する
次に、LINEユーザーが公式アカウントを友だち追加した時に、そのユーザーがKurocoのメンバーとして自動登録されるように設定します。
LINEアカウントを使ってKurocoにメンバー登録する方法として、OAuth連携機能を利用することも可能です。
- OAuth連携でLINEログインをして、LINEユーザーIDを保存するは、外部アカウントを使用したOAuth認証によるSSOを実装するを参照してください。
- LINEログインのチャネルと、Messaging APIのチャネルは同じプロパイダー内に設定してください。
- LINEログインの[チャネル基本設定]->[リンクされたボット]でMessaging APIのチャネルをリンクしてください。
グループを準備する
「LINEユーザー」というグループを作成します。作成したグループのIDを控えます。
Webhookを受けるエンドポイントを作成する
Kuroco側に、LINEのイベントを受けるためのWebhook用エンドポイントを作成します。
セキュリティをCookie
としているAPIに以下の設定でエンドポイントを作成します。
項目名 | 入力値 |
---|---|
パス | line/webhook |
モデル | Api / Api/v1 / request_api_post |
サマリ | LINE Webhook用エンドポイント |
APIリクエスト制限 | None |
name | line_webhook |
また、メンバー登録用にもう一つエンドポイント作成します。
セキュリティを動的トークン
としているAPIに以下の設定でエンドポイントを作成します。
項目名 | 入力値 |
---|---|
パス | member/line/register |
モデル | メンバー / Member/v1 / insert |
サマリ | LINEメンバー登録 |
APIリクエスト制限 | Group Auth / 管理者 |
default_group_id | 上記で作成したグループのID |
not_login_after_insert | チェックなし |
login_ok_flg | チェックなし |
use_columns | name1 , name1 , login_ok_flg |
ユーザー登録を行うカスタム処理を作成する
以下の内容でカスタム処理を作成します。
- タイトル: LINE Webhook
- カテゴリ:未分類
- 識別子: line_webhook
- 処理:(以下参照)
loading...
LINEのチャネル設定でWebhook URLを設定する
LINEデベロッパーコンソールにて、Messaging APIチャンネル設定画面の[Messaging API]タブを開きます。
[Webhook URL]に上記で作成したエンドポイントを登録します。
LINE公式アカウントを友だち追加して動作の確認をする
Messaging APIチャンネル設定画面に掲載されている[QRコード]をお手持ちの端末で撮影し、LINE公式アカウントを友だち追加します。
公式チャンネル名が表示されるので、確認して[友だち追加]をタップします。
Kuroco管理画面のメンバー一覧画面にメンバーが追加されていることを確認します。
Kuroco のカスタム処理を使ってユーザーにメッセージを送信する
テストのため、カスタム処理を作成し以下のように記載してください。
- タイトル: LINE test
- カテゴリ:未分類
- 識別子: line_test
- 処理:(以下参照)
{sendmail
var=result
subject='LINE message test'
contents="こんにちは[emoji:5ac21a8c040ab15980c9b43f:001][emoji:5ac21a8c040ab15980c9b43f:002][emoji:5ac21a8c040ab15980c9b43f:003] "
to="Uxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx@text.line.r-cms.jp"
}
to
には (LINEユーザーID)@text.line.r-cms.jp
の形式で入力してください。
contents
には上記のように絵文字を含めることが可能です。絵文字を挿入したい箇所に以下のように記載してください。
[emoji:(プロダクトID):(絵文字ID)]
利用可能な絵文字についてはLINE絵文字定義をご参照ください。
送信結果
サポート
お探しのページは見つかりましたか?解決しない場合は、問い合わせフォームからお問い合わせいただくか、Slackコミュニティにご参加ください。