代码之家  ›  专栏  ›  技术社区  ›  Patterson Park Music

Twilio API:更新对话参与者属性

  •  0
  • Patterson Park Music  · 技术社区  · 2 年前

    我正在尝试为Twilio的对话服务设置一些API调用,这样我就可以将Google Sheets中的CRM数据连接到Twilio前线应用程序。我正在努力成功修改参与者。

    我尝试使用下面的代码调用Twilio的编辑对话参与者API。

    function editParticipantAttributes() {
      
      var twUrl = 'https://conversations.twilio.com/v1/Conversations/' + chSid + '/Participants/' + mbSid;
      
      var options = {
        method: 'post',
        headers: {
          'Authorization': twAuthHeader,
        },
        followRedirects: true,
        muteHttpExceptions: true,
        payload: {attributes: JSON.stringify({
          customer_id: '1',
          display_name: 'First Last'
          })
        }
      }
    
      var response = UrlFetchApp.fetch(twUrl, options);
      Logger.log(response)
    }
    

    Twilio Conversations Resource使用以下cURL作为示例:

    curl -X POST "https://conversations.twilio.com/v1/Conversations/CHXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Participants/MBXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" \
    --data-urlencode "DateUpdated=2019-05-15T13:37:35Z" \
    -u $TWILIO_ACCOUNT_SID:$TWILIO_AUTH_TOKEN
    

    以下是关于attributes参数的信息:

    一个可选的字符串元数据字段,可用于存储所需的任何数据。如果指定,字符串值必须包含结构有效的JSON。请注意,如果未设置属性,则将返回“{}”。

    我得到的回复是关于合适参与者的信息,但是 属性 保留为“{}”。有人能帮我看看我的错误吗?

    回复:

    {"last_read_message_index": null, "date_updated": "2023-05-25T00:45:09Z", "last_read_timestamp": null, "conversation_sid": "CHXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "account_sid": "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "url": "https://conversations.twilio.com/v1/Conversations/CHXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Participants/MBXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "date_created": "2023-05-24T23:05:37Z", "role_sid": "RLXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "sid": "MBXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "attributes": "{}", "identity": null, "messaging_binding": {"proxy_address": "+1XXXXXXXXXX", "type": "sms", "address": "+1XXXXXXXXXX"}}
    

    提前感谢!

    1 回复  |  直到 2 年前
        1
  •  0
  •   Tanaike    2 年前

    我相信你的目标如下。

    • 您想将以下curl命令转换为Google Apps脚本。

      ATTRIBUTES=$(cat << EOF
      {
          "role": "driver"
      }
      EOF
      )
      
      curl -X POST "https://conversations.twilio.com/v1/Conversations/CHXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Participants/MBXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" \
      --data-urlencode "Attributes=$ATTRIBUTES" \
      -u $TWILIO_ACCOUNT_SID:$TWILIO_AUTH_TOKEN
      

    在这种情况下,下面的修改如何?

    修改的脚本:

    function editParticipantAttributes() {
      var TWILIO_AUTH_TOKEN = "TWILIO_AUTH_TOKEN"; // Please set your value.
      var TWILIO_ACCOUNT_SID = "TWILIO_ACCOUNT_SID"; // Please set your value.
      var obj = { "role": "driver" };
    
      var twUrl = 'https://conversations.twilio.com/v1/Conversations/' + chSid + '/Participants/' + mbSid;
      var basicAuth = Utilities.base64Encode(`${TWILIO_ACCOUNT_SID}:${TWILIO_AUTH_TOKEN}`);
      var options = {
        method: 'post',
        headers: { 'Authorization': `Basic ${basicAuth}` },
        payload: { "Attributes": JSON.stringify(obj) },
        muteHttpExceptions: true,
      }
      var response = UrlFetchApp.fetch(twUrl, options);
      Logger.log(response.getContentText())
    }
    

    注:

    • 我认为这个请求与上面的curl命令相同。但是,不幸的是,我无法测试这个修改后的脚本。因此,当您测试此脚本并出现错误时,请确认您的值 TWILIO_AUTH_TOKEN , TWILIO_ACCOUNT_SID , obj twUrl 再一次

    参考:

    推荐文章