Twilio Gather на Программируемый голос - Как получить доступ к основным событиям телефонных вызовов
Я пытаюсь автоматизировать поток вызовов в систему IVR приложения call-центра регрессионного тестирования.
Я могу совершать звонки и получать ответ, как и ожидалось. Но я пытаюсь понять, сколько времени занимает 2 строки кода
console.log("Waiting for Server to respond");
а также
console.log("Received response from Server");
Насколько я понимаю, после того, как Twilio получает ответ TwiML от моего экземпляра Node.js, он обрабатывает и отправляет / получает сигналы телефонии.
Только после получения полного ответа от сервера я получаю голосовой ответ в /TC4_Step1_Validate
, Когда я регистрирую метку времени для обеих линий и фиксирую разницу. Это приходит около 20 секунд. Но на самом деле приложение отвечает в течение нескольких секунд.
Я полагаю, что Twilio ждет завершения всего диалога, ожидая 3-секундного молчания, преобразует этот аудиопоток в текст, а затем публикует его в моей функции. Вот почему я вижу эти 20 секунд.
Но мне нужно понять, сколько времени понадобилось, чтобы сначала получить ответ по телефону, а не весь поток с временем ожидания и временем преобразования речи в текст.
Короче говоря, я пытаюсь понять, сколько времени потребовалось, чтобы приложение контакт-центра ответило.
Пожалуйста, найдите мой пример кода ниже
Функция сделать звонок
app.get('/TC4', function(req, res) {
client.calls.create({
url: 'http://{PUBLIC_URL}/TC4_Step1',
to: '{TO_NUMBER}',
from: '{TWILIO_NUMBER}',
method: 'GET',
Record: 'false',
})
.then((call) => res.send(call.sid));
});
Функция сбора ответа шага 1 из приложения контакт-центра, когда я звоню
app.get('/TC4_Step1', function(req, res) {
res.setHeader('Content-Type', 'application/xml');
const response = new VoiceResponse();
const gather = response.gather({
input: 'speech',
action: 'http://{PUBLIC_URL}/TC4_Step1_Validate',
timeout: 3,
});
res.send(response.toString());
console.log("Waiting for Server to respond");
console.log(response.toString());
});
Функция для проверки ответа от шага 1 и сбора ответа шага 2
app.post('/TC4_Step1_Validate', function(req, res) {
const response = new VoiceResponse();
console.log("Received response from Server");
console.log(req.body.SpeechResult.toLowerCase());
if(req.body.SpeechResult.toLowerCase().indexOf("{VERIFY_TEXT1}")!=-1 && req.body.SpeechResult.toLowerCase().indexOf("{VERIFY_TEXT2}")!=-1) {
response.pause({
length: 2
});
const gather = response.gather({
input: 'speech',
action: 'http://{PUBLIC_URL}/TC4_Step2_Validate',
timeout: 3,
});
} else {
console.log("Failed Step 1");
response.hangup();
}
res.setHeader('Content-Type', 'application/xml');
res.send(response.toString());
console.log("DTMF Input 2");
console.log(response.toString());
});
1 ответ
Twilio разработчик евангелист здесь.
Когда вы устанавливаете action
атрибут, как вы сделали здесь с путем /TC4_Step1_Validate
Twilio будет вызывать его только после выполнения текущего действия. В этом случае он ждет, пока пользователь перестанет говорить в течение 3 секунд, а затем, как вы предлагаете, выполняет работу с аудиопотоком, чтобы превратить его в текст и, наконец, позвонит вашему action
URL.
Twilio не делает доступными другие события, которые конкретно представляют начало взаимодействия Twilio с вызовом в случае прослушивания речевого ввода или действительно большинства взаимодействий. Вы можете получить события вызова при использовании <Dial>
, но они относятся к призывам к третьей стороне.
Итак, хотя я не верю, что Twilio может сделать то, что вы просите, я бы хотел спросить, чего вы пытаетесь достичь в целом, чтобы я мог помочь решить проблему другим способом?