簡體   English   中英

Twilio:將呼叫轉移到 Twilio 中的流

[英]Twilio: forward a call to a flow in Twilio

我想在 flex 中的代理掛斷后將呼叫轉發給 Studio Flow,以便為用戶播放 CSAT 調查。 我創建了一個在 Twilio 中調用 function 的插件,但轉發完成后出現“錯誤 - 11200”。

我替換了掛斷操作,因此它將呼叫重定向到 twilio 中的 function。function 應該將呼叫發送到將播放調查的流程。 我懷疑問題與身份驗證有關,但我找不到太多相關信息。

我是 twilio 的新手,非常感謝任何幫助

這是調用 function 的插件部分:

flex.Actions.replaceAction("HangupCall", (payload) => {
    console.log('task attributes: ' + JSON.stringify(payload.task.attributes));
    if (payload.task.attributes.direction === "inbound") {

        // Describe the body of your request
        const body = {
            callSid: payload.task.attributes.call_sid,
            callerId: payload.task.attributes.from,
            destination: '+18xxxxxxxx',
            Token: manager.store.getState().flex.session.ssoTokenPayload.token
        };

        // Set up the HTTP options for your request
        const options = {
            method: 'POST',
            body: new URLSearchParams(body),
            headers: {
                'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'
            }
        };

        // Make the network request using the Fetch API
        fetch('https://TWILIO INSTANCE.twil.io/TransferUtil', options)
            .then(resp => resp.json())
            .then(data => console.log(data));

    } else {
        original(payload);
    }
});

這是 twilio 中的 function:

const TokenValidator = require('twilio-flex-token-validator').functionValidator;

exports.handler = TokenValidator(async function(context, event, callback) {
  const response = new Twilio.Response();
  response.appendHeader('Access-Control-Allow-Origin', '*');
  response.appendHeader('Access-Control-Allow-Methods', 'OPTIONS, POST, GET');
  response.appendHeader('Access-Control-Allow-Headers', 'Content-Type');
  response.appendHeader('Content-Type', 'application/json');

  const client = require('twilio')();
  const callSid = event.callSid;
  const callerId = event.callerId;
  const destination = event.destination;

  console.log('Call Sid:', callSid);
  console.log('Transfer call from:', callerId, 'to:', destination);

  try {
    let url = 'https://studio.twilio.com/v2/Flows/FWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Executions';
    let call = await client.calls(callSid).update({method: 'POST', url: encodeURI(url)});

    console.log(JSON.stringify(call));
    response.appendHeader('Content-Type', 'application/json');
    response.setBody(call);
    callback(null, response);
  }
  catch (err) {
    response.appendHeader('Content-Type', 'plain/text');
    response.setBody(err.message);
    console.log(err.message);
    response.setStatusCode(500);
    callback(null, response);
  }
});

編輯:在錯誤日志中我得到以下信息:

截圖一

截圖2

啊,我讀錯了。 Function 沒有任何問題,錯誤來自嘗試向 URL 發出 webhook 請求的調用https://studio.twilio.com/v2/Flows/FWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Executions 這是 REST API 觸發器,需要以與使用您的帳戶憑據或 API 密鑰的任何其他 API 請求相同的方式進行請求。

您應該將 URL 設置為 webhook 觸發器 URL,它看起來像https://webhooks.twilio.com/v1/Accounts/${ACCOUNT_SID}/Flows/${FLOW_SID} 然后調用將能夠將其作為正常 webhook 流程的一部分進行請求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM