Как указано в ссылке https://github.com/twilio/voice-quickstart-android#bullet5,
, нам нужно создать приложение TwiML, а для голосового запроса должен быть установлен, например, https://twiliodev.mycompany.com/makeCall для совершения вызова. , Тогда что следует написать в функции makecall для подключения текущего вызова, потому что, если мы используем глагол Dial, тогда он совершает другой вызов.
Примечание. Я использую программируемый голос Twilio для соединения двух устройств Android с использованием VOIP.
Теперь вопрос в том, какой ответ Twiml должен быть отправлен в функцию MakeCall для установления соединения, потому что в следующей функции, если я верну пустой ответ, вызов не будет подключен.
[HttpPost]
public ActionResult MakeCall()
{
var response = new VoiceResponse();
return TwiML(response);
}
Редактировать @Alan Спасибо за ответ. Как я использую c# на стороне сервера. Я использовал Dial Verb как
var dial = response.Dial(callerId: from);
Какой вызов Connect и Немедленное отключение глагола клиента bcoz отсутствует. Теперь, как добавить клиентский глагол в глагол Dial, я использую клиентский глагол как
dial.Append(client);
, а ответ Twiml равен
<Response>
<Dial callerId="client:21f421792"></Dial>
<Client>2170561
</Client>
</Response>
И его ошибка возвращаемой схемы bcoz Я думаю, правильная схема
<Response>
<Dial callerId="client:21f421792">
<Client>2170561
</Client></Dial>
</Response>
Можете ли вы помочь, как добавить Клиент Глагол внутри Вызов Глагол.
Спасибо.
Редактировать 2
В соответствии с предложением @ philna sh эта c# ссылка предназначена для вызова от браузера к клиенту и использует нового клиента Dial как
var dial = new Dial();
, но я использую Android VOIP SDK для вызова между двумя android устройствами. Для которого, если я использую новый объект Dial, он будет устанавливать новый вызов как дочерний вызов. Который я не хочу создавать. И как запрос @ philna sh полный код для функции makeCall
[HttpPost]
public ActionResult MakeCall()
{
var response = new VoiceResponse();
string from,to;
if (Request.HttpMethod == HttpMethod.Post.Method)
{
from = Request.Form["From"];
to = Request.Form["To"];
}
else
{
from = Request.QueryString["From"];
to = Request.QueryString["To"];
}
var dial = response.Dial(callerId: from);
var client = new Client(to);
dial.Append(client);
return TwiML(response);
}
Редактировать 3
<?xml version="1.0" encoding="utf-8"?>
<Response>
<Dial>
<Client>2170561
</Client>
</Dial>
</Response>
Как я заметил для вызова VOIP, если Клиент xml тэг находится внутри тэга Dial, затем он успешно соединяется, но он рассчитывает две ветви для каждого звонка и взимает плату за два звонка. По умолчанию Twilio использует два вызова в каждом вызове, когда одно устройство хочет позвонить на другое устройство, или я ошибаюсь?
Еще раз, пожалуйста, обратите внимание, что я говорю о двух android подключениях устройства VOIP через URL запроса Twiml на наш сервер.