チャットエクステンション


チャットエクステンションは、利用者がスレッドに直接呼び出すことができる、インタラクティブなソーシャル機能をボットに追加します。
内容
  1. 概要
  2. ドロワーエントリーポイントの設定
  3. シェア機能
  4. ユーザーIDとスレッドコンテキストの取得
  5. アクセス権の管理
  6. ヒントとベストプラクティス
  7. よくある質問とトラブルシューティング

概要

インタラクションモデル

チャットエクステンションは、利用者が関連づけられたボットとのやり取りを開始するとMessengerの投稿ツールドロワーに表示されます。

利用者がチャットエクステンションのアイコンをタップすると、開発者が指定したウェブビューベースのUIが開きます。利用者はそこからスレッドにシェアするコンテンツを作成または選択できます。スレッドにシェアするメッセージには、画像、リンク、その他を含めることができます。

グループに属する利用者がこの方法でシェアされたメッセージに反応すると、開発者はスレッド内のコンテキスト情報にアクセスしたり、アクセス許可を要求したり、その他MessengerエクステンションJavaScript SDKで提供されることを実行できるようになります。

活用例

  • 表現: Messengerで使えるスタンプやミームの作成。楽曲、動画、その他コンテンツのシェア。
  • メディア: フォローしている記事やトピックの最新情報をグループに送信。
  • コマース: グループ発注やグループ企画。
  • プロダクティビティ: タスクトラッカーの最新情報の送信やドキュメントの共同編集。
  • エンターテイメント: ゲームやグループチャレンジの作成。

サンプルプロジェクト

オープンソースのTaskBotで、ここで紹介したすべての機能をお試しいただけます。


Messengerで使ってみる→Github Repo →

ドロワーエントリーポイントの設定

ドロワーを追加した利用者にボットを表示させるには、このホームURLを設定する必要があります。

チャットエクステンションの公開準備ができていない場合は、in_testtrueに設定して、開発者以外の人に表示されないようにしてください。

詳しくはこちら→

シェア機能

Messengerプラットフォームではウェブビューのシェア機能をカスタマイズがサポートされています。これにより開発者は、メッセージや、ボットからシェアされるメッセージのリンク先をカスタマイズすることができます。

これらの機能をチャットエクステンションで使用するための機能拡張が行われました。主な変更点は以下のとおりです。

現在のスレッドへのシェア

beginShareFlow()機能modeパラメータでcurrent_threadモードがサポートされるようになりました。これにより利用者はチャットエクステンションを起動したスレッドにシェアできるようになり、別のスレッドを選択する必要がなくなります。一般的な開発環境では、エクステンション本体でcurrent_threadモードを選択してください。

利用者が使っているバージョンのMessengerでこのモードがサポートされているかを確認したい場合は、getSupportedFeatures()メソッド"sharing_direct"キーを確認します。

シェアへのリアクション

beginShareFlow()へのsuccessコールバックは、エラーが発生しない限り、利用者がシェアを承認しても拒否しても呼び出されます。

Messengerがsuccessコールバックに対してis_sentフィールドを渡すようになり、メッセージが実際に送信されたかを確認できるようになりました。

利用者がシェアを行ったらウェブビューを閉じることをおすすめします(すべてのシェアが完了したか利用者を次のフローに移動させる場合)。

<script> 
    var messageToShare = { ... };
      
    MessengerExtensions.beginShareFlow(function success(response) {
      if(response.is_sent === true){ 
      	// User shared. We're done here!
      	MessengerExtensions.requestCloseBrowser();
      }
      else{
      	// User canceled their share! 
      
      }
    }, 
    function error(errorCode, errorMessage) {      
  	// An error occurred trying to share!
    },
    messageToShare,
    "current_thread");   
</script>

詳しい仕様については、beginShareFlow()に関するドキュメントをご覧ください。

詳しくはこちら→

ユーザーIDとスレッドコンテキストの取得

getContext()機能を呼び出して以下を取得します。

  • ユーザーID (PSID)
  • スレッドID
  • スレッドタイプ

この機能は、ボットとのスレッドを開いているか否かにかかわらず、ウェブビューを表示しているすべての利用者を対象にします。

この機能を使ってユーザーIDを取得しても、利用者のプロフィール情報を取得できるわけではありません。プロフィール情報を取得するには、プロフィールへのアクセス権が必要です。


詳しくはこちら→

アクセス権の管理

利用者がボットとのスレッドを開始すると、その利用者へのメッセージの送信許可と、その利用者のプロフィール情報へのアクセス許可を自動的に取得できます。これらのアクセス許可は、ボットをブロックした利用者とスレッドを削除した利用者については無効になります。

ウェブビューでボットとやり取りしている利用者がボットとのスレッドを開始していない場合は、この利用者に上記アクセス許可を要求することができます。それには、MessengerエクステンションJavaScript SDKのアクセス許可機能が利用できます。

詳しくはこちら→

ヒントとベストプラクティス

Messengerプラットフォームでチャットエクステンションを活用するためのベストプラクティスをいくつかご紹介します。

  • 一般的なアプローチ
  • 複数のシェアモードを使い分けるには
  • ウェブビューの見た目を調整して効果を最大限に発揮させるには
  • 後方互換性を確保するには
詳しくはこちら→

デザインキット

チャットエクステンションをデザインする準備が整ったら、 便利なSketchファイルをお試しください。必要なツールがすべて揃っています。

キットを入手する→

よくある質問とトラブルシューティング

Q: チャットエクステンションを開発するにはボットが必要ですか?

A: はい、必要です。 チャットエクステンションは、ボット用の拡張機能です。

Q: どうすれば投稿ツールドロワーにチャットエクステンションが表示されますか?

A: チャットエクステンションは、関連づけられたボットとのやり取りを開始した利用者の投稿ツールドロワーに表示されます。

Q: チャットエクステンションがないと利用者にボットからシェアしてもらえないのでしょうか?

A: そんなことはありません。 Messengerプラットフォームでは、ボットからシェアするさまざまな方法があります。

Q: ボットでウェブビューやMessengerエクステンションのJavascript SDKを使用するにはチャットエクステンションが必要ですか? どのような関連があるのですか?

A: いいえ、必要ありません。 名前が似ているだけで、関連はありません。ウェブビューはチャットエクステンション以外にもあらゆる方法で起動でき、そのすべてでMessengerエクステンションを使用できます。

Q: チャットエクステンションの受信者がリンクをクリックしたとき、MessengerエクステンションのJavaScript SDK経由でどの機能が利用可能になりますか?

A: 送信者が利用できるすべての機能を、シェアされたコンテンツを開いた利用者も利用できます。ユーザーIDやスレッドのコンテキストを取得したり、自身でシェアしたり、さまざまな操作が可能です。この場合、ユーザープロフィールへのアクセスや、利用者へのメッセージの送信は、必要なアクセス許可をリクエストするまで行うことができません。

Q: チャットエクステンションはMessenger.comやFacebook.comでも機能しますか?

A: この機能はiOSとAndroidでのみサポートされています。 ウェブベースクライアントを利用している場合、チャットエクステンションの利用者からシェアされたリンクをクリックすることはできますが、JavaScript SDKで提供される機能を使用することはできません。詳しくは、チャットエクステンションのベストプラクティスガイドにある「下方互換性」をご覧ください。

Q: 現在のスレッドへのシェアと配信でのシェアの違いは?

A: チャットエクステンションは、すでに公開済みのウェブビューシェア機能を基盤に、新しい"current_thread"というフローを加えたものです。

利用者がスレッド内で投稿ツールを使ってボットを追加するなら、外部の誰かにではなく、スレッド内へのシェアであるのが当然です。「current_thread」フローにより、利用者はコンテンツが複数のスレッドに配信されるのではなく、現在のスレッドでシェアされることを確認できます。

Q: 最新バージョンのMessengerとSDKを使っているのにウェブビューが機能しません。何が問題でしょうか?

A: 以下のことをご確認ください。

  • ページが公開されていない: ボットを関連づけているページが未公開だと、ページの役割(開発者や管理者など)を付与されていない利用者にはSDKが読み込まれません。利用者をページに追加するか、ページを公開してください。

  • messenger_extensionプロパティが設定されていない: ウェブビューが開かれるすべての地点でmessenger_extensionstrueに設定されていることを確認してください。これには次のようなものが含まれます。


  • ドメインがホワイトリストに追加されていない: ページがホストされているドメインを、ボットのドメインのホワイトリストに追加してください。

  • 詳しくは、こちらのウェブビューのトラブルシューティングのヒントをご覧ください。

Q: チャットエクステンションを作成しましたが、投稿ツールのドロワーに表示されません。修正方法を教えてください。

以下のことをご確認ください。

  1. 正しいページアクセストークンを使って、表示させる特定のページにhome_urlを設定していることをご確認ください。別のFacebookページにボットを転送しても、ホームURLは転送されません。

  2. 開発モード中にin_test属性をtrueに設定した場合は、ドロワーを確認しているのが対象ボットの開発者またはテスターである、またはFacebookページの管理者であることをご確認ください。ボットを公開している場合は、ボットを申請していることと、pages_messagingのアクセス許可の取得を承認されていることをご確認ください。

  3. ボットをアタッチしているFacebookページが公開されていることをご確認ください。

  4. ボット自体が公開モードであることをご確認ください。

  5. 過去にボットと会話をしていることをご確認ください。

  6. 投稿ツールのドロワーに表示されるチャットエクステンションはキャッシュに保存されます。表示されるまで、しばらく時間がかかる場合があります。