質問

Web Widget(従来版)のネイティブ動作をJavaScript APIで変更したいヘルプセンターを読み、さまざまな実装を見つけました。これらのWeb Widget(従来版)APIワークフローをどのように組み合わせることができますか。

回答

免責事項:この記事は説明のみを目的として提供されています。記事内で例示したコードについて、Zendeskはサポートも保証もいたしません。何か問題があった場合はコメント欄に投稿するか、インターネットで解決策を探してみてください。

ウィジェットの設定を適切なタイミングで適用します。ワークフローには、部門の更新後に実行しなければならないものと、ウィジェットの初回接続時または再接続時に実行しなければならないものがあります。これは、チャットセッションが存在する前にウィジェットを読み込むことができ、訪問者はセッションのタイムアウトまたはページの更新後に再接続できるためです。ページの読み込み時にコードが1回しか実行されない場合、アクティブなチャットセッションで一部の設定が失われるか、再接続後にウィジェットで失われる可能性があります。

次に、CRM部門を設定する例を示します。この例では、「CRM」は、Chatウィジェットの設定で構成するChat部門の名前です(たとえば、営業チームやアカウントチームが使用する部門)。「CRM」は、アカウント内の正確な部門名で置き換えます。

<script id="ze-snippet" 
src="https://static.zdassets.com/ekr/snippet.js?key=ACCOUNT_KEY"> </script>

<script>
// first hide the widget on page load
zE('webWidget', 'hide');

// whenever an unread message appears unhide and open the widget 
zE('webWidget:on', 'chat:unreadMessages', function(number) {
  zE('webWidget', 'show');
  zE('webWidget', 'open');
});

// this callback runs whenever chat first connects (or reconnects)
zE('webWidget:on', 'chat:connected', function() {
  
  // put any code you only want run once here
  
});

// this callback runs whenever a department status changes
zE('webWidget:on', 'chat:departmentStatus', function(dept) {
  
  // only set the widget online for chat if this department was online
  if (dept.name === 'CRM' && dept.status === 'online') {
    
    // apply the chat widget settings
    zE('webWidget', 'updateSettings', {
      webWidget: {
        chat: {
          departments: {
            enabled: [''],
            select: 'CRM'
          },
          suppress: false
        }
      }
    });
  } else if (dept.name === 'CRM' && dept.status !== 'online') {
    
    // or suppress chat (optional: apply contact form settings here)
    zE('webWidget', 'updateSettings', {
      webWidget: {
        chat: {
          suppress: true
        }
      }
    });
  }
});
</script>

スクリプトに関する2つのポイントを説明します。スクリプトの残りの部分を変更することなく、未読メッセージの最初の非表示とその後の表示を省略することができます。これらのコールはウィジェットが読み込まれるとすぐに実行されるため、スクリプトはコールを先頭に配置します。これらはオプションです。

一部のカスタムワークフローでは、updateSettings APIブロックはchat:connectedコールバックに配置されますが、chat:departmentStatusコールバックに配置することもできます。ウィジェットは、初回接続時またはセッションタイムアウトによる再接続後にウィジェットを適用します。原則として、設定が有効になる必要があるときに、ワークフローをイベントに関連付けます。

  • chat:connectedは、部門のステータスを更新するたびに繰り返してはならない初期設定など、チャットセッションごとに1回実行するロジックに使用します。
  • chat:departmentStatusは、部門のステータスが変更されたときやウィジェットが初期化されたときに起動するため、部門の空き状況やルーティングの変更と常に同期する必要があるロジックに使用します。

さまざまなWeb Widget(従来版)APIワークフローの詳細については、以下を参照してください。

  • 特定の部門がオンラインの場合にのみ、Webページ上にChatを表示するようにWeb Widget(従来版)を設定できますか?
  • タイムアウトしたチャット訪問者が再接続した後、部門を再適用できますか。
  • 訪問者がタイムアウトになっても再接続した場合に、プリチャットフォームが表示されるようにするにはどうすればよいですか?

翻訳に関する免責事項:この記事は、お客様の利便性のために自動翻訳ソフ トウェアによって翻訳されたものです。Zendeskでは、翻訳の正確さを期すために相応の努力を払っておりますが、翻訳の正確性につ いては保証いたしません。

翻訳された記事の内容の正確性に関して疑問が生じた場合は、正式版である英語の記事 を参照してください。

Powered by Zendesk