Created
October 28, 2015 02:05
-
-
Save spacedsweden/124cbd532ef8c6adfc2d to your computer and use it in GitHub Desktop.
Callbackcontroller
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class CallbackController : ApiController { | |
[HttpPost] | |
public async Task<SvamletModel> Post(CallbackEventModel model) { | |
var sinch = SinchFactory.CreateCallbackResponseFactory(Locale.EnUs); | |
var reader = sinch.CreateEventReader(); | |
var evt = reader.ReadModel(model); | |
var builder = sinch.CreateIceSvamletBuilder(); | |
switch (evt.Event) | |
{ | |
case Event.IncomingCall: | |
if (model.OriginationType == "MXP") | |
{ | |
await ConnectToConference(model.To.Endpoint, model.From, builder); | |
} | |
else | |
{ | |
builder.AddNumberInputMenu("menu1", "Enter 4 digit pin", 4, "Enter 4 digit pin", 3, | |
TimeSpan.FromSeconds(60)); | |
builder.RunMenu("menu1"); | |
} | |
break; | |
case Event.PromptInput: | |
await ConnectToConference(model.MenuResult.Value, model.From, builder); | |
break; | |
case Event.AnsweredCall: | |
builder.Continue(); | |
break; | |
case Event.DisconnectedCall: | |
break; | |
default: | |
break; | |
} | |
return builder.Build().Model; | |
} | |
private async Task ConnectToConference(string pinCode, string cli, IIceSvamletBuilder builder) { | |
using (var db = new ConferenceContext()) | |
{ | |
var conference = | |
await | |
db.Conferences.FirstOrDefaultAsync( | |
c => c.PinCode == pinCode && (c.ConferenceEndDate >= DateTime.Today || c.ValidForever)); | |
if (conference != null) | |
{ | |
builder.ConnectConference(conference.ConferenceId.ToString()).WithCli(cli); | |
// builder.SaySsml("<speak version =\"1.0\" xmlns=\"http://www.w3.org/2001/10/synthesis\" xml:lang=\"en-US\"><break strength=\"medium\" /><prosody rate=\"slow\">Welcome to the <break strength=\"medium\" />conference </prosody></speak>"); | |
builder.Say("ah, Welcome to the conference"); | |
} | |
else | |
{ | |
builder.Say("Invalid code").Hangup(HangupCause.Normal); | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment