如何使用Twilio来呼叫,挂机,暂停和取消呼叫?

时间:2017-08-20 14:33:52

标签: c# asp.net-web-api twilio

我有一个Twilio号码,我明白为了做这4个动作(呼叫,挂断,断言和取消呼叫)我需要创建一个电话会议,但我不明白我是如何添加我的Twilio会议号码以及如何添加其他号码的客户端移动电话号码。例如,如果我的Twilio号码是“+9728888888”,而我想要拨打移动号码的客户是“+9725555555” - 我想要代码示例: 1.致电客户(从Twilio号码“+9728888888”到手机号码“+9725555555”) 2.保持通话 3.冷静下来 4.环聊电话。

我在web api项目上使用 Twilio NuGet 。你能给我一些代码示例,考虑一下上面所有这四种场景我给出的数字(Twilio和移动设备)吗?我真的很感激。

顺便说一句,我在他们的网站上看到了代码示例:

using Twilio.TwiML;

class Example
{
    static void Main()
    {
        var response = new VoiceResponse();
        var dial = new Dial();
        dial.Conference("moderated-conference-room",
            startConferenceOnEnter: false);
        response.Dial(dial);

        System.Console.WriteLine(response.ToString());
    }
}

但它不承认Twilio或手机甚至Twilio认证,所以我不确定它是如何工作的..

1 个答案:

答案 0 :(得分:0)

Twilio开发者传道者在这里。

如果您想通过Twilio号码拨打电话给最终用户,并将您的座席和用户都置于电话会议中,那么我就是这样做的。但是,我不是C#开发人员,所以尽管我尝试提供代码示例,但我没有在.NET web api项目中经验过。

您说您使用的是Twilio package from Nuget,这是一个良好的开端。

首先,您需要为座席生成一个呼叫并将其置于电话会议中以等待用户。为此,您需要use the Twilio REST API to place the call。该代码看起来有点像

const string accountSid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
const string authToken = "your_auth_token";
TwilioClient.Init(accountSid, authToken);

var to = new PhoneNumber("AGENT_PHONE_NUMBER");
var from = new PhoneNumber("+9728888888");
var call = CallResource.Create(
  to,
  from,
  url: new Uri("http://example.com/conference")
);

此通话与发送给API的座席号Twilio will make a request to the URL相关联。 Your application needs to respond to tell Twilio what to do with the call。在这种情况下,我们应该将代理放入<Conference>以等待用户。在此操作中,我们还需要生成对用户的调用。

public IHttpActionResult Conference()
{
    // make the call to the user
    var to = new PhoneNumber("+9725555555");
    var from = new PhoneNumber("+9728888888");
    var call = CallResource.Create(
      to,
      from,
      url: new Uri("http://example.com/user_conference")
    );
    // return the TwiML
    var response = new VoiceResponse();
    var dial = new Dial();
    dial.Conference("Conference", endConferenceOnExit: true);
    response.Dial(dial);
    Ok(response.ToString());
}

注意:我已将此会议的座席方设置为endConferenceOnExit: true。这意味着当座席挂断时,电话会议将以所有参与者结束。

现在,Twilio将向用户发出呼叫,并在连接时询问新URL如何处理呼叫。这次您只需要使用TwiML进行响应即可连接到同一个会议。我会留给你处理。

最后,to put participants on hold you need to use the REST API again。您需要获取要暂停的会议SID和参与者的SID。由于您将从代理处暂停用户,因此您可以在第二次webhook回调中获取这两个SID到您的应用程序。

使用会议并呼叫SID,发出如下的POST请求:

    const string conferenceSid = "CONFERENCE_SID";
    const string callSid = "CALL_SID";
    ParticipantResource.Update(
        conferenceSid,
        callSid,
        hold: true,
        holdUrl: new Uri("http://example.com/hold")
    );

您还可以提供可在用户等待时提供音乐的保留网址。有关详细信息,请check the participant resource documentation。取消对用户的保留是相同的过程,但您将hold设置为false

如果这让您了解创建此功能,请告诉我。