アカウント連携機能を利用することで、外部サービス(会員向けWebサイトなど)のユーザーアカウントとLINE上での連携が可能となり、会員向けWebサイト上の情報、個人に紐づく請求金額情報などをチャットで取得できるようになります。
※ アカウント連携機能は、公開先が「LINE」の場合のみ利用可能です。
※ アカウント連携機能は、LINE Account Link オプションプランが必要となります。
ご利用、詳細説明などを希望される場合、本オプションの追加については、弊社営業担当、もしくは DialogPlay問合せ窓口 までお問い合わせください。
手順(前準備)
本機能を利用する際には予め連携する外部サービス上で、アカウント連携用ページ、ユーザー識別子取得用API、ユーザー識別子を用いたシステム連携用API、連携解除用API(任意)を用意しておく必要があります。
- アカウント連携用ページの作成
参考:〔 LINE Developersドキュメント「ユーザーアカウントを連携する」 〕
LINEアカウントと、外部サービスアカウントの連携を行うために、外部サービスへのログイン用ページ(アカウント連携用ページ)を作成します。
作成したアカウント連携用ページへの遷移は、チャット内で「アカウント連携を開始する」をクリックされたタイミングで行われます。
アカウント連携用ページへ遷移した時、LINEにて生成された「linkToken」 がパラメータとして、付与された状態となっています。
[アカウント連携用ページで必要な動作]- 「nonce」を作成します。「nonce」は以下条件を満たすことが推奨されます。
・予測が困難であり、一度しか使用できない文字列であること
・セキュリティ上問題があるため、自社サービスのユーザーIDなどの予測可能な値は使用しない
・長さは10文字以上255文字以下であること - 連携を承認した場合は、以下のURL(LINEの連携結果ページ)へリダイレクトします。
https://access.line.me/dialog/bot/accountLink?linkToken={linkToken}&nonce={nonce}
・URL内の「linkToken」には、パラメータとして渡された「linkToken」を指定
・URL内の「nonce」には、作成した「nonce」を指定 - パラメータとして送られた「linkToken」を変更してリダイレクトした場合は、LINEとの連携はできません。
また、「linkToken」に以下のような問題があった場合も、LINEとの連携はできません。
・「linkToken」の有効期限を超過している(発行後10分)
・一度使用された「linkToken」である
[動作例]
① アカウント連携用ページへ遷移
② ユーザー名、パスワードを入力する
③ ログインボタンを押下
④ 入力されたユーザー名、パスワードに問題がないことを確認する
問題があった場合は手順⑤以降を行わず、ユーザー名とパスワードの再入力を促す
⑤ ユーザーと紐づける一時トークン「nonce」を生成する
⑥ LINEの連携結果ページへリダイレクトする - 「nonce」を作成します。「nonce」は以下条件を満たすことが推奨されます。
- ユーザー識別子取得用APIの作成
DialogPlayが外部サービスとアカウント連携をするために、ユーザーのアカウント情報を取得するAPIを作成します。
APIへは以下のリクエストが送られます。
・『リクエストメソッド』 POST
・『Content-Type』 application/json または application/x-www-form-urlencoded
・『Request Body』 {'nonce': :user_id}
[ユーザー識別子取得用APIで必要な動作]- 渡された「nonce」を確認し、紐づいているアカウントを特定します。「nonce」は、アカウント連携用ページで作成されたものと同じ値です。
レスポンスとして連携するアカウント情報を、以下の形で返します。
{'user_id': :id}
・「:id」には文字列を指定 - 以下のような場合は連携失敗と判断し、ユーザーに連携が失敗したことを通知するメッセージを送信します。
・APIからHTTPエラーが返された
・レスポンスに「user_id」が含まれていない
・「user_id」が文字列ではない
[動作例]
① 渡された「nonce」を確認し、紐づいているアカウントを特定する
② 使用した「nonce」をサービスから削除する
③ 特定したアカウントの「UUID」をレスポンスとして返す - 渡された「nonce」を確認し、紐づいているアカウントを特定します。「nonce」は、アカウント連携用ページで作成されたものと同じ値です。
- ユーザー識別子を用いたシステム連携用APIの作成
DialogPlayでのアカウント連携は、『外部システム連携』によって行われます。
ユーザー識別子取得用APIから取得したアカウントの「UUID」を外部サービスに渡すことで、アカウント連携機能を利用することができます。
アカウント連携機能を利用し、連携後に特定の動作を行うためには、以下のようなAPIが必要となります。
[ユーザー識別子を用いたシステム連携用APIで必要な動作]
- 渡されたアカウントの「UUID」を確認し、紐づいているアカウントを特定します。
- 特定したアカウントとして必要な動作を実行します。
- 実行結果をレスポンスとして返します。
[動作例:アカウントの請求金額を返すAPI]
① JSON形式で送られてきたデータから「user_id」を取得する
② 取得した「user_id」を元にアカウントを特定する
③ 特定したアカウントの請求金額を取得する
④ レスポンスとして「{‘price’: :price}」を返す - 連携解除用APIの作成
このAPIは必須ではありません。連携解除時に外部サービスで、何かしらの動作を行いたい場合に作成します。
APIへは以下のリクエストが送られます。
・『リクエストメソッド』 POST
・『Content-Type』 application/json または application/x-www-form-urlencoded
・『Request Body』 {'user_id': :user_id}
[連携解除用APIで必要な動作]
このリクエストに対して、レスポンスとして返すパラメータはありません。
また、このAPIでHTTPエラーが発生した場合でも、DialogPlayとの連携解除は続行されます。
以下シナリオ例で、アカウント連携機能の利用方法を説明します。
LINEに公開済みのチャットボットに対する手順となるため、未公開の場合は【LINEボットに公開】を参考に、チャットボットを公開してください。
[シナリオ例]
ガス会社の情報サイトとアカウントを連携し、アカウントに紐づく請求情報を確認する。
手順(DialogPlay アカウント連携)
- 左メニューの『アプリケーション』を選択し、アカウント連携を行いたいチャットボットを選択してください。
- 『アカウント連携機能』をクリックし、『LINEアカウントと連携する外部サービスを設定する』にチェックを入れてください。
- 各項目に必要な情報を入力してください。
項目 説明 アカウント連携用URL 「手順(前準備)」で作成した、アカウント連携用ページのURL ユーザー識別子取得用URL 「手順(前準備)」で作成した、ユーザー識別子取得用APIのURL アカウント連携解除通知用URL (任意) 「手順(前準備)」で作成した、連携解除用APIのURL
空白可Content-Type アカウント連携用URLやユーザー識別子取得用URLへ送るContent-Typeを指定 - “公開“ボタンをクリックしてください。
今回は、リッチメニューからアカウント連携機能を実行するため、LINEにリッチメニューを設定します。
手順(LINEボット アカウント連携)
- 〔LINE Official Account Manager〕を開いて、『アカウントリスト』から、リッチメニューを設定したいアカウントを選択してください。
※ 2019年4月より「LINE@」は「LINE公式アカウント」に、サービスが統合されます。
2019年4月以前にLINEに公開している、かつ「LINE公式アカウント」への移行が済んでいない場合、移行後に本手順を実施するか、以下の手順を 〔LINE@ MANAGER〕の内容に、適宜読み換えてください。 - 『ホーム』タブから、”リッチメニュー“をクリックしてください。
- “作成“ボタンをクリックしてください。
- 『表示設定』の各項目に、必要な情報を入力してください。
項目 説明 タイトル リッチメニューのタイトル
チャット画面には表示されない内部管理用ステータス オンにすることで設定がチャット画面に反映される 表示期間 リッチメニューをチャット画面に表示する期間 メニューバーのテキスト チャット画面下部のバーに表示されるテキスト
バーをクリックすることで、リッチメニューが展開するメニューのデフォルト表示 表示する :チャット画面を開いた時に、自動的にリッチメニューを展開する
表示しない:チャット画面を開いた時に、自動的にリッチメニューを展開しない - 『コンテンツ設定』で任意のテンプレートを選択し、各項目に必要な情報を入力してください。
今回使用するアカウント連携メニューと請求情報確認メニューについては、以下の例を参考に各項目を入力してください。
※ アカウント連携機能を利用するには「アカウント連携/解除」という、固定のワードである必要があります。
[入力例]
メニュー タイプ テキスト アカウント連携(B:ログイン/ログアウト) テキスト アカウント連携/解除 請求情報確認(C:今月の請求情報) テキスト 今月の請求情報
項目 説明 テンプレートを選択 リッチメニューのレイアウト 背景画像をアップロード 選択したテンプレートに適した背景画像を用意し、アップロードする
画像のサイズについては、「デザインガイド」を参照アクション 選択したテンプレートの各ボタンの動作
リンク :ボタン押下時にリダイレクトするURLを指定
クーポン :ボタン押下時にクーポンを表示
テキスト :ボタン押下時に設定されたテキストを発言
ショップカード:ボタン押下時にショップカードを表示
設定しない :ボタン押下時に何もしない - “保存“ボタンをクリックしてください。
- LINEで動作を確認してください。
アカウント連携有無により、アカウント連携/解除処理を行うボタン(今回例では”ログイン/ログアウト”ボタン)をクリックした時の動作が異なります。
未連携:アカウント連携処理
連携済:アカウント解除処理
[動作例:アカウント連携]- アカウント未連携の状態で、”ログイン/ログアウト“ボタンをクリックしてください。
- “アカウント連携を開始する“をクリックしてください。
- 外部サービスのログイン用ページに遷移しますので、『ユーザー名』、『パスワード』を入力し、”ログイン“ボタンをクリックしてください。
- ログイン後、アカウントの連携に成功すると、LINEの連携結果ページに遷移します。
- LINEの連携結果ページを閉じて、完了メッセージが表示されることを確認してください。
[動作例:アカウント解除]
- アカウント連携済の状態で、”ログイン/ログアウト“ボタンをクリックしてください。
- “アカウント連携を解除する“をクリックしてください。
- 完了メッセージが表示されることを確認してください。
- アカウント未連携の状態で、”ログイン/ログアウト“ボタンをクリックしてください。
次に、ガス会社の情報サイトから請求情報を取得するために、外部システム連携の設定とシナリオ作成を行います。
手順(DialogPlay 外部システム連携)
「手順(前準備)」ユーザー識別子を用いたシステム連携用API例の「アカウントの請求金額を返すAPI」を使用した場合の手順となります。
- 左メニューの『チャットボット一覧』より設定を行うチャットボットを選択し、『外部システム連携』タブから “新規作成“ボタンをクリックしてください。
- 『外部システム連携先』に外部システム連携名、『説明』に作成する外部システム連携の説明を入力してください。
- 『タイプ』に「HTTP(S)」を選択し、『URL』に接続先URLを入力してください。
- 『Method』に「POST」を選択し、『Headers』に以下の例を参考に各項目を入力してください。
[入力例]
『名前』 Content-Type
『値』 application/json - 『Request Body』に以下の例を参考に入力してください。
「@アカウント連携ID」は、ユーザー識別子取得用APIで取得したアカウント情報を格納するためのシステム変数です。
[入力例]
{"id": "{{@アカウント連携ID}}"} - 『Response Type』に「JSON」を選択し、『Response Map』に以下の例を参考に各項目を入力してください。
[入力例]
『変換元』 price
『変換先』 金額 - “保存“ボタンをクリックしてください。
手順(DialogPlay シナリオ作成)
- パンくずメニューのチャットボット名をクリックし、チャットボット画面に戻り、『シナリオ一覧』タブから”新規作成“ボタンをクリックしてください。
- 『シナリオ名』と『ユーザー発言例』を入力してください。
「手順(LINEボット アカウント連携)」手順5で設定したテキスト「今月の請求情報」を『ユーザー発言例』に含めてください。 - 『シナリオの流れ』エリアの中にあるリストから「外部システム連携」を選択し、”アクションを追加“ボタンをクリックしてください。
- 『連携先』に「手順(DialogPlay 外部システム連携)」で作成した「今月の請求情報」を選択し、『実行条件』に以下の例を参考に各項目を入力してください。
『実行条件』は、アクションの下側に表示される”“をクリックすることで、表示されます。
[条件入力例]
「@アカウント連携ID」 <> 「(空白)」 - 『シナリオの流れ』エリアの中にあるリストから、『テキスト発言』アクションを追加し、以下の例を参考に入力してください。
[入力例]
『発言内容』 今月の請求金額は{{金額}}円です。
[条件入力例]
「金額」 <> 「(空白)」 - 『シナリオの流れ』エリアの中にあるリストから、『シナリオの強制終了』アクションを追加し、以下の例を参考に入力してください。
アカウント連携時に請求情報を取得・発言後、シナリオを終了します。
[条件入力例]
「@アカウント連携ID」 <> 「(空白)」 - 『シナリオの流れ』エリアの中にあるリストから、『テキスト発言』アクションを追加し、以下の例を参考に入力してください。
アカウントが連携されていない場合のみ、このアクションが実行されます。
[入力例]アカウントが連携されていません。
リッチメニューよりログインを行ってください。 - “保存“ボタンをクリックしてください。
- 修正を反映させるため、再度公開処理を行ってください。
左メニューの『アプリケーション』から、公開処理を行うアプリケーションを選択し、”公開“ボタンをクリックしてください。 - LINE上で動作を確認してください。
[動作例:アカウント連携済]
- アカウント連携済の状態で、”今月の請求情報“ボタンをクリックしてください。
- アカウントに紐づく請求情報が表示されます。
- アカウント未連携の状態で、”今月の請求情報“ボタンをクリックすると、アカウント連携を促すメッセージが表示されます。
- アカウント連携済の状態で、”今月の請求情報“ボタンをクリックしてください。