Конференция Twilio - возвращение после зависания при запуске
У нас есть настройка конференции Twilio, и главный пользователь (модератор) может частично управлять конференцией из меню конференции. Чтобы получить к нему доступ, они нажимают *.
Это устанавливается при первом создании конференции следующим образом (из функций):
exports.handler = function(context, event, callback) {
let twiml = new Twilio.twiml.VoiceResponse();
let twilio_call_id = event.twilio_call_id;
twiml.dial({
hangupOnStar: true,
action: "https://" + context.DOMAIN_NAME + "/clientConferenceMenu",
method: 'POST'
}).conference(twilio_call_id, {
startConferenceOnEnter: true,
endConferenceOnExit: false,
statusCallbackEvent: "join end leave hold",
statusCallback: "https://" + context.DOMAIN_NAME + "/callStatus",
record: "record_from_start",
participantLabel: "Client"
});
return callback(null, twiml);
});
После того, как пользователь вошел в меню конференции, он может вернуться в конференцию, используя определенный параметр - в этом случае нажмите 3 (или произнесите возврат).
Если они нажмут опцию 3, если попытаются снова добавить их в конференцию:
client.conferences(conference_id)
.fetch()
.then((conference) => {
console.log("Conference: ", conference);
twiml.dial({
hangupOnStar: true,
action: "https://" + context.DOMAIN_NAME + "/clientConferenceMenu",
method: 'POST'
}).conference(conference.friendlyName, {
startConferenceOnEnter: true,
endConferenceOnExit: false,
statusCallbackEvent: "join end leave hold",
statusCallback: "https://" + context.DOMAIN_NAME + "/callStatus",
record: "record_from_start",
participantLabel: "Client"
});
return callback(null, twiml);
});
Однако ... на самом деле он создает новую конференцию с тем же именем, но в другой реальной комнате. Я думаю, мне нужно либо добавить их обратно с помощью идентификатора конференции-SID, но я не вижу способа сделать это, либо как-то снять их с удержания.
Любая помощь с благодарностью получена :)
1 ответ
Поддержка Twilio пришла хорошо.
Мой оригинальный тимл "rejoin":
twiml.dial({
hangupOnStar: true,
action: "https://" + context.DOMAIN_NAME + "/clientConferenceMenu",
method: 'POST'
}).conference(twilio_call_id, {
startConferenceOnEnter: true,
endConferenceOnExit: false,
statusCallbackEvent: "join end leave hold",
statusCallback: "https://" + context.DOMAIN_NAME + "/callStatus",
participantLabel: "Client"
});
Их предложение заключалось в том, чтобы убрать "варианты" конференции:
twiml.dial({
hangupOnStar: true,
action: "https://" + context.DOMAIN_NAME + "/clientConferenceMenu",
method: 'POST'
}).conference(twilio_call_id);
Это сработало! :)