メインコンテンツまでスキップ

LINEユーザーにメッセージを送付する

このページでは、KurocoとLINEのMessaging APIを連携し、KurocoからLINEユーザーにメッセーを送信する方法を説明します。

概要

Kuroco には LINEユーザーに対してメッセージを送信する機能が備わっています。 具体的には、LINE Messaging APIを用いて、KurocoからLINEへメッセージを送信するような命令を送る事で、ユーザーにメッセージが送信されます。 メッセージの送信はカスタム処理に該当する記述を行う必要があります。

LINE公式アカウントへの友だち追加時に、LINEユーザーIDでKurocoへのユーザー登録(ログインする権限はなし)を行い、トリガー機能を使ってKuroco内のさまざまなイベントをトリガーとし、任意のタイミングで任意のユーザーにLINEメッセージを送信出来ます。

学べること

以下の手順で、KurocoからLINEユーザーにメッセージを送信します。

前提条件

LINE公式アカウントへの友だち追加時に送信されるWebhookを利用して、LINEユーザーIDを取得します。

ヒント

LINEアカウントを使ってKurocoにメンバー登録する方法として、OAuth連携機能を利用することも可能です。
詳しくはLINE公式アカウントの友だち追加時のWebhookからLINEユーザーIDを取得するのヒントをご確認ください。

LINE Developersコンソールでチャネルを作成する

まず、LINE Developersコンソールにてチャネルを作成する必要があります。LINEアカウントを持っていない場合はLINEアカウントを作成してください。

LINE Developersコンソール にログインしてください(初回ログイン時のみ、開発者として登録するか否かを尋ねられるので、開発者として登録してください)。 Image from Gyazo

次に新規プロバイダーを作成します。「作成」ボタンをクリックしてください。 Image from Gyazo

プロバイダー名を指定します。ここでは「KurocoSampleProvider」とします。 Image from Gyazo

つづいて、チャネルを作成します。「新規チャネル作成」をクリックしてください。 Image from Gyazo

チャネルの種類は「Messaging API」を選択してください。 Image from Gyazo

新規チャネル作成画面に遷移します。 Image from Gyazo

以下のように各項目を入力し「作成」ボタンをクリックしてください。

項目名入力値
チャネルの種類Messaging API
プロバイダー前述の手順で作成したプロバイダーを指定してください。
会社・事業者の所在国・地域法人の場合は会社の所在国・地域を、個人の場合は店舗や居住地の所在国・地域を選択してください。
チャネルアイコンチャネルのアイコンとなる画像をアップロードしてください。
チャネル名チャネル名を指定してください。
チャネル説明チャネルの説明を入力してください。
大業種大業種を選択してください。
小業種小業種を選択してください。
メールアドレスこのチャンネルの管理者となる方のメールアドレスを入力してください。
LINE公式アカウント利用規約内容を確認の上、チェックを入れてください。
LINE公式アカウントAPI利用規約内容を確認の上、チェックを入れてください

確認のダイアログが表示されますので、問題なければ「OK」をクリックしてください。 Image from Gyazo

作成すると、以下のようにチャネルが表示されます。クリックして詳細情報を確認してください。 Image from Gyazo

以上で、チャネルが作成できました。
チャネルIDは後述で使用しますので控えておいてください。

LINEの接続設定をする

次にKurocoとLINEの接続設定を行います。

まず、公開鍵・秘密鍵のペアを準備し、先ほど作成したチャネルの設定画面にて公開鍵を登録する必要があります。

公開鍵・秘密鍵のペアを作成する方法はいくつかありますが、お使いのウェブブラウザがWeb Crypto API に対応している(たとえばGoogle Chromeブラウザなどの)場合、SubtleCrypto.generateKey() メソッドを使って秘密鍵と公開鍵を生成できます。 ここではGoogle Chromeを例に公開鍵・秘密鍵の作成方法を説明します。

Google Chromeを起動し、ブラウザのデベロッパーツールを開きます。 Image from Gyazo

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,
" "
)
);
})();

Image from Gyazo 成功すると以下のような秘密鍵と公開鍵が生成されます。

秘密鍵の例

{
"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.........."
}

先ほど作成したチャネルの設定画面にてアサーション署名キーの横にある[公開鍵を登録する]ボタンをクリックします。 Image from Gyazo

作成した公開鍵を入力します。[登録]ボタンをクリックします。 Image from Gyazo

公開鍵の登録に成功すると、kidが表示されるのでコピーして控えてください。 Image from Gyazo

Kurocoの管理画面からLINEとの連携をする

次にKuroco管理画面へ移動し、[外部システム連携] -> [LINE]に遷移します。

Image from Gyazo

[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を控えます。 Image from Gyazo

Webhookを受けるエンドポイントを作成する

Kuroco側に、LINEのイベントを受けるためのWebhook用エンドポイントを作成します。 セキュリティをCookieとしているAPIに以下の設定でエンドポイントを作成します。

項目名入力値
パスline/webhook
モデルApi / Api/v1 / request_api_post
サマリLINE Webhook用エンドポイント
APIリクエスト制限None
nameline_webhook

Image from Gyazo

また、メンバー登録用にもう一つエンドポイント作成します。 セキュリティを動的トークンとしているAPIに以下の設定でエンドポイントを作成します。

項目名入力値
パスmember/line/register
モデルメンバー / Member/v1 / insert
サマリLINEメンバー登録
APIリクエスト制限Group Auth / 管理者
default_group_id上記で作成したグループのID
not_login_after_insertチェックなし
login_ok_flgチェックなし
use_columnsname1, name1, login_ok_flg

Image from Gyazo

Image from Gyazo

ユーザー登録を行うカスタム処理を作成する

以下の内容でカスタム処理を作成します。

  • タイトル: LINE Webhook
  • カテゴリ:未分類
  • 識別子: line_webhook
  • 処理:(以下参照)
line_webhook
loading...

LINEのチャネル設定でWebhook URLを設定する

LINEデベロッパーコンソールにて、Messaging APIチャンネル設定画面の[Messaging API]タブを開きます。
[Webhook URL]に上記で作成したエンドポイントを登録します。

Image from Gyazo

LINE公式アカウントを友だち追加して動作の確認をする

Messaging APIチャンネル設定画面に掲載されている[QRコード]をお手持ちの端末で撮影し、LINE公式アカウントを友だち追加します。

Image from Gyazo

公式チャンネル名が表示されるので、確認して[友だち追加]をタップします。

Image from Gyazo

Kuroco管理画面のメンバー一覧画面にメンバーが追加されていることを確認します。

Image from Gyazo

Image from Gyazo

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絵文字定義をご参照ください。

送信結果 Image from Gyazo


サポート

お探しのページは見つかりましたか?解決しない場合は、問い合わせフォームからお問い合わせいただくか、Slackコミュニティにご参加ください。