Редактирование Twilio TwiML с помощью API или HTTP POST

Моя компания использует Twilio Flex в качестве нашей телефонной системы, и недавно мне поручили настроить функцию, которая позволит нам редактировать голосовое сообщение TwiML, которое воспроизводится перед нашим обычным голосовым сообщением. Это сообщение TwiML будет изменено с помощью бота Twilio, который я опубликовал в наших командах Microsoft.

Причина этого в том, что наша служба поддержки может добавить короткое сообщение в строки «В настоящее время у нас возникают проблемы с X» перед нашим обычным сообщением «Добро пожаловать в службу поддержки [Компания]».

Если TwiML можно редактировать с помощью HTTP POST/PUT или API Twilio, это должно быть тривиальным вопросом, но пока я не смог понять, как это сделать.

Я не смог найти никаких упоминаний об этом в документ API, поэтому решил, что лучше всего использовать HTTP POST. Используя это как отправную точку, я могу получить свой TwiML с помощью HTTP GET:

https://support.twilio.com/hc/en-us/articles/223132187--Not-Authorized-error-when-trying-to-view-TwiML-Bin-URL

const axios = require('axios');
const crypto = require('crypto');
const accountSidFlex = process.env.accountSidFlex;
const authTokenFlex = process.env.authTokenFlex;

var URL = 'https://handler.twilio.com/twiml/EHXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' + '?AccountSid=' + accountSidFlex
    var twilioSig = crypto.createHmac('sha1', authTokenFlex).update(new Buffer(URL, 'utf-8')).digest('Base64')
var config = {
    headers:{
    'X-TWILIO-SIGNATURE': twilioSig
    }
}

axios.get(
    URL,config  
).catch(error => console.info(error))
.then(response => {
    console.info(response.data)
})

response.data показывает текущий XML-контент TwiML.

Мои попытки POST дают только тот же результат, что и GET, а PUT дает 405 Method Not Allowed.

var URL = 'https://handler.twilio.com/twiml/EHXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' + '?AccountSid=' + accountSidFlex
var twilioSig = crypto.createHmac('sha1', authTokenFlex).update(new Buffer(URL, 'utf-8')).digest('Base64')

var config = {
    headers:{
    'X-TWILIO-SIGNATURE': twilioSig,
    'Content-Type': 'text/xml'
    }
}

var xml = 
'<?xml version = "1.0" encoding = "UTF-8"?>\
<Response><Play digits = "www"/>\
<Say voice = "alice">"We are currently experiencing X related issues". </Say>\
</Response>';

axios.post(
    URL,xml,config
)
.catch(error => console.info(error))
.then(response => {
    console.info(response.data)
})

В идеале я хотел бы иметь возможность изменять конкретный TwiML с помощью методов HTTP или Twilio-API, чтобы мы могли использовать его в потоке Studio Flow. Мы просто будем молчать до тех пор, пока нам не понадобится что-то добавить, и вернемся к молчанию, как только проблемы исчезнут.

Любая помощь будет оценена по достоинству!

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
375
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В настоящее время вы не можете программно изменить содержимое TwiML Bins, Studio Flows или Twilio Functions. Я считаю, что ключевая функциональность, которую вы ищете, — это способ динамического обновления обмена сообщениями (Say/Play Widget) в потоке Studio на основе некоторых условий.

Один из способов — использовать виджет функций для извлечения документа Twilio Sync для сообщения, возврата сообщения в виде JSON и воспроизведения этого сообщения виджетом Say/Play. Вы можете найти примеры REST API синхронизации Twilio для добавления, изменения и извлечения в соответствующем документе.

Вы можете получить проанализированный ответ, используя описанный здесь синтаксис переменных, https://www.twilio.com/docs/studio/widget-library#run-функция.

Другие вопросы по теме