ここではTwilioの開発者のエバンジェリストです。
Twilio番号からエンドユーザに電話をかけ、エージェントとユーザの両方を電話会議にかけたい場合は、これが私のやり方です。私はC#開発者ではないので、コードサンプルを提供しようとしますが、.NET Web APIプロジェクトでは経験はありません。
あなたはを使用していると言いますが、それは良いスタートです。
まず、エージェントへのコールを生成し、会議コールに配置してユーザーを待機させる必要があります。これを行うには、use the Twilio REST API to place the callとなります。このコードは、ビットこの呼び出しがAPIに送信され、エージェントの数Twilio will make a request to the URLと接続し、この
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")
);
のように見えます。 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を取得する必要があります。ユーザーはエージェントから保留状態になるため、アプリケーションへの2回目のWebhookコールバックでこれらのSIDの両方を取得します。会議では
と、このようなPOSTリクエストを行い、SIDを呼び出す:
const string conferenceSid = "CONFERENCE_SID";
const string callSid = "CALL_SID";
ParticipantResource.Update(
conferenceSid,
callSid,
hold: true,
holdUrl: new Uri("http://example.com/hold")
);
また、ユーザーが待機しながら、音楽を提供することができ、ホールドURLを提供することができます。詳細は、check the participant resource documentationを参照してください。ユーザーの保留は同じプロセスですが、hold
をfalse
に設定しています。
この機能が作成されるまでお待ちください。