Twilio Flex との Salesforce 音声統合のための Agent Assist

Twilio と Salesforce Service Cloud Voice(SCV)を統合すると、Salesforce の担当者は Twilio プラットフォームの機能を使用して Salesforce で通話を発信、受信できます。

始める前に

Salesforce 音声を Twilio Flex と統合するには、次のリソースにアクセスする必要があります。

ステップ 1: Twilio Service Cloud Voice を設定する

Twilio ガイドの手順に沿って、Salesforce SCV をパートナー テレフォニー プロバイダとして Twilio で設定します。

ステップ 2: Agent Assist を Twilio Flex と統合する

次の手順に沿って、Agent Assist を Twilio Flex と統合します。

SIPREC コネクタ アドオンをインストールする

SIPREC コネクタ アドオンを使用すると、Twilio Flex アカウントで音声通話メディア ストリームの SIPREC フォーク を Agent Assist に作成できます。次の手順に沿って、SIPREC コネクタ アドオンをインストールします。

  1. [Twilio Home] に移動し、検索ボックスに「Marketplace 」と入力します。

    Twilio Home

  2. [カタログ] > [ストリーム コネクタ] > [Siprec コネクタ] > [インストール] > [インスタンスを追加] をクリックします。

  3. [構成] タブに移動し、次の詳細情報を使用してプラグインを構成します。

    • 一意の名前: SipRec1
    • セッション録画サーバー: sip:+<GTP-provisioned-phone-number>@216.239.36.145:5672;transport=tls;secure=true;edge=umatilla
  4. [保存] をクリックします。

Twilio Functions を構成する

次の手順に沿って、2 つの Twilio Functions(conversation-namewrap-up)を構成します。

  1. Twilio コンソールに移動し、検索ボックスに「Function」と入力します。
  2. [Functions] > [サービスを作成] をクリックします。
  3. 新しいサービスに ui-connector-auth という名前を付けて、[次へ] をクリックします。
  4. [追加 +] > [関数の追加] をクリックします。

次の手順に沿って、conversation-name 関数を作成します。

  1. 関数に conversation-name という名前を付けます。
  2. ロックをクリックして、関数の公開設定を [公開] に変更します。
  3. ui-connector-auth.js コードをコピーして、エディタに貼り付けます。
  4. [保存] をクリックします。

wrap-up 関数と EventCallbackUrl を使用すると、通話完了プロセスを自動化できます。これにより、Salesforce と Twilio Flex の両方で通話を手動で終了する必要がなくなります。次の手順に沿って、EventCallbackUrl を介してイベントを受信する wrap-up 関数を作成します。

  1. Twilio コンソール > 検索バーに移動し、「Taskrouter Workspace」と入力します。
  2. [Taskrouter workspaces] を選択します。
  3. [ワークスペース] 列の SID をメモします。
  4. エディタに移動し、関数に wrap-up という名前を付けます。
  5. 次のコードをエディタに追加します。

    /**
    * @desc A Twilio Function that wraps up a conversation automatically to avoid agents being stuck
    * in a wrap up state while in Salesforce's Service Console.
    */
    exports.handler = function(context, event, callback) {
     const response = new Twilio.Response();
     const client = context.getTwilioClient();
    
     /**
      * @TODO Add your workspaceSid to this variable.
      */
     const workspaceSid = ""
    
     response.appendHeader('Content-Type', 'application/json');
    
     if (!event.EventType) {
       response.setBody({});
        return callback(null, response);
      }
    
      /**
       * This event is dispatched with the Event Callback Url, which is assigned in a Taskrouter Workspace's
       * Settings.
       */
      if (event.EventType === 'task.wrapup') {
       client.taskrouter.v1.workspaces(workspaceSid)
          .tasks(event.TaskSid)
          .update({
           assignmentStatus: 'completed',
           reason: 'Auto-completed via Function'
          })
          .then(() => {
            response.setBody({ status: "completed" });
            callback(null, response);
          })
          .catch(err => {
           response.setStatusCode(500);
           response.setBody({ error: err.message });
           callback(null, response);
         });
      } else {
       response.setBody({ status: "ignored" });
        callback(null, response);
      }
    };
    
  6. 変数 workspaceSid を見つけて、Taskrouter Workspace SID の手順で取得したワークスペース SID で更新します。

  7. サービスの URL をメモします。次のステップでは、wrap-up 関数の完全な URL を使用する必要があります。

  8. [保存] > [すべてデプロイ] をクリックします。

  9. Twilio コンソールに移動し、検索バーに「Taskrouter Workspaces 」と入力します。

  10. 使用しているワークスペース > [設定] > [イベント コールバック] > [イベント コールバック URL] をクリックします。

  11. 前のステップで取得した wrap-up 関数の URL を入力します。

  12. [コールバック イベント] をクリックし、[特定のイベント] に設定します。

  13. [すべて選択] > [保存] をクリックします。

Flex Studio で IVR を構成する

自動電話メニューを設定するには、Twilio Studio を使用して、SIPREC フォークを開始する通話フローを作成します。このフォークは、メディア ストリームを Agent Assist に直接送信します。また、通話フローは HTTP POST を実行して、電話番号と会話 ID を Agent Assist と共有します。

次の手順に沿って、Flex Studio でインタラクティブ音声レスポンス(IVR)を構成します。

  1. Twilio コンソールに移動し、検索ボックスに「Studio」と入力します。
  2. [Studio] をクリックすると、フローのリストが表示された Studio ダッシュボード ページが開きます。
  3. Studio ダッシュボード ページでは、次の操作を行うことができます。

    • 既存のフローを更新する。
    • フローを作成する。

既存のフローを更新する

Twilio コンソールで次の手順に沿って、既存のフローを更新します。

  1. 更新するフローを選択します。
  2. [Develop] > [Phone Numbers] > [Manage] > [Active Numbers] をクリックします。表には、Flex アカウント用にプロビジョニングされたデフォルトの Twilio 番号が 1 行表示されます。
  3. [Voice - Studio Workflow] に移動し、[Voice IVR] をクリックします。

フローを作成する

HTTP リクエストの作成、関数の実行、ストリームのフォーク、Flex への送信を行う新しいフローを作成します。Twilio コンソールで次の手順に沿って、HTTP リクエスト フローを作成します。

  1. [Studio ダッシュボード] ページに移動し、[Create new flow] をクリックします。
  2. [検索ウィジェット] に移動し、「HTTP 」と入力します。
  3. [Make HTTP request] ウィジェットをフローパネルにドラッグします。
  4. 次の詳細情報を使用してウィジェットを構成し、[保存] をクリックします。

    • ウィジェット名: register_twilio
    • リクエスト メソッド: POST
    • リクエスト URL:
      your-ui-connector-cloud-run-url.run.app/register-app
    • コンテンツ タイプ: Application/JSON
    • リクエスト本文:

      {
      "accountSid": "yourTwilioAccountSid",
      "authToken": "yourTwilioAccountAuthToken"
      }
      

次の手順に沿って、実行関数フローを作成します。

  1. 検索ウィジェットに「Run function 」と入力します。
  2. [Run function] ウィジェットをフローパネルにドラッグして、register_twilio ウィジェットの [Success] 出力と [Fail] 出力を接続します。
  3. 次の詳細情報を使用して、実行関数ウィジェットを構成します。

    • ウィジェット名: conversation_name
    • サービス: ui-connector-auth
    • 環境: ui
    • 関数: /conversation-name
    • 関数のパラメータ: 次の関数のパラメータを入力します。

      • トークン:
        {{ widgets.register_twilio.parsed.token }}
      • エンドポイント:
        your-ui-connector-cloud-run-url.run.app/conversation-name
      • 電話番号:
        {{ trigger.call.From | replace_first:'+','' }}
      • ConversationName:
        projects/project/locations/location/conversations/{{ trigger.call.CallSid }}
  4. [保存] をクリックします。

次の手順に沿って、フォーク ストリーム フローを作成します。

  1. 検索ウィジェットに「Fork stream 」と入力します。
  2. [Fork Stream widget] をフローパネルに移動して、HTTP リクエスト ウィジェットの [Success] 出力と [Fail] 出力を接続します。
  3. 次の詳細情報を使用して、フォーク ストリーム ウィジェットを構成します。

    • ストリーム アクション: 開始
    • ストリーム タイプ: Siprec
    • コネクタ名: Siprec1
    • トラック: 両方のトラック
    • ストリーム パラメータ: 次のストリーム パラメータを入力します。

      • キー: conversation
      • :
        projects/project-id/conversations/{{trigger.call.CallSid}}
  4. [保存] をクリックします。

次の手順に沿って、Flex フローへの送信を作成します。

  1. 検索ウィジェットに「Send to Flex 」と入力します。
  2. [Send to Flex] をフローパネルに移動し、[Fork Stream] の [Next] を [Send to Flex] に接続します。
  3. [Send to Flex] をクリックします。
  4. 次の詳細情報を使用して、Flex ウィジェットへの送信を構成します。

    • ワークフロー: SCV で使用しているワークフローを選択します。
    • タスクチャネル: 音声
    • 属性:
      {"agent_assist__ConversationId__c":"{{trigger.call.CallSid}}"}
    • URL メソッド: POST
  5. [保存] > [公開] をクリックします。

ステップ 4: Agent Assist のレコードページを構成する

次の手順に沿って、Agent Assist のレコードページを構成します。

  1. Agent Assist の音声通話レコードページを作成します。
  2. [Activation] > [App default] > [Assign as app default] をクリックします。
  3. [Twilio for service cloud voice] を選択します。
  4. [次へ] > [保存] をクリックします。

ステップ 5: Agent Assist の統合をテストする

次の手順に沿って、Agent Assist をテストします。

  1. Salesforce に移動します。
  2. [**apps アプリケーション ランチャー**] をクリックします。
  3. 検索フィールドに「Twilio for service cloud voice 」と入力します。[ケース] ページが開きます。
  4. [オムニチャネル] パネルに移動し、[新規] をクリックします。
  5. [check_circle Check] をクリックして、Twilio Flex の番号に電話をかけます。これは最初の手順でメモしたものです。
  6. 会話の両側をテストし、Agent Assist の機能が構成どおりに動作していることを確認します。