private async Task ProcessEvent(AnswerEvent ev, TinyIoCContainer container) { var phoneNumber = container.Resolve <string>("phoneNumber"); var agentPhoneNumber = container.Resolve <string>("agentPhoneNumber"); if (ev.From == phoneNumber && ev.To == agentPhoneNumber && !string.IsNullOrEmpty(ev.Tag)) { // "agent" answered call var ids = ev.Tag.Split(':'); var incomingCallId = ids[0]; var conferenceId = ids[1]; var conference = await Conference.Get(conferenceId); var incomingCall = await Call.Get(incomingCallId); //join it to the conference await conference.CreateMember(new Dictionary <string, object> { { "callId", ev.CallId } }); //answer incoming call (to the app number) await incomingCall.AnswerOnIncoming(); //and join this call to the conference too await conference.CreateMember(new Dictionary <string, object> { { "callId", incomingCallId } }); } }
private async Task ProcessCatapultToEvent(AnswerEvent ev) { //"to" number answered a call. Making a bridge with "from" number's call var b = await Bridge.Create(Client, new[] { ev.CallId, ev.Tag }, true); Debug.WriteLine(string.Format("BridgeId is {0}", b.Id)); }
/// <summary> /// “确定”按钮点击事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void certainButton_Click(object sender, EventArgs e) { string str = "["; foreach (Control control in this.Controls) { if (control is PanelExLine) { PanelExLine pe = (PanelExLine)control; if (pe.panelEx == null) { MessageBox.Show("请完成所有连线"); return; } else { str += pe.index + "(" + pe.panelEx.index + "),"; } } } str = str.Substring(0, str.Length - 1); str += "]"; AnswerEvent?.Invoke(str); Close(); //System.Diagnostics.Debug.WriteLine(str); }
public static async Task ProcessEvent(AnswerEvent ev, UrlHelper url, HttpContextBase context) { Trace.WriteLine("AnswerEvent", "Events"); await Bridge.Create(new Dictionary <string, object> { { "callIds", new[] { ev.CallId, ev.Tag } } }); }
public static async Task ProcessEvent(AnswerEvent ev, UrlHelper url, HttpContextBase context) { Trace.WriteLine("AnswerEvent", "Events"); var call = new Call { Id = ev.CallId }; await call.SpeakSentence("Hello SIP client"); }
public ActionResult DeleteConfirmed(Guid id) { AnswerEvent answerEvent = db.AnswerEvents.Find(id); db.AnswerEvents.Remove(answerEvent); db.SaveChanges(); return(RedirectToAction("Index")); }
public void Answered(object o, EventArgs e) { Terminal.ToAnswerCall -= Answered; Terminal.ToRejectCall -= Rejected; Terminal.ToNoAnswerCall -= NoAnswered; Mode = Enums.Mode.Busy; AnswerEvent?.Invoke(this, null); Terminal.EndCallEvent += EndCallOnPort; ATS.GetStation().EndCallEvent += EndCallOnPort; }
public async static Task ProcessEvent(AnswerEvent ev, UrlHelper url, HttpContextBase context) { Trace.WriteLine("AnswerEvent", "Events"); var call = new Call { Id = ev.CallId }; Thread.Sleep(3000); await call.SpeakSentence("hello flipper", "hello-state"); }
public async static Task ProcessEvent(AnswerEvent ev, UrlHelper url, HttpContextBase context) { var call = new Call { Id = ev.CallId }; Trace.WriteLine("FirstMember-AnswerEvent", "Events"); Thread.Sleep(3000); await call.SpeakSentence("Welcome to the conference"); }
protected virtual void RaiseAnswerToEvent(AnswerEvent eventArgs) { this.AnswerEvent?.Invoke( this, new AnswerEvent( eventArgs.Id, eventArgs.TelephoneNumber, eventArgs.CalledTelephoneNumber, eventArgs.StateInCall)); }
public ActionResult Edit([Bind(Include = "Id,AnswerId,ClientTime,Answer")] AnswerEvent answerEvent) { if (ModelState.IsValid) { db.Entry(answerEvent).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("Index")); } return(View(answerEvent)); }
public void TakeAnswer(object sender, AnswerEvent e) { Id = e.Id; if (e.StateInCall == CallState.Answered) { Console.WriteLine("Terminal with number: {0}, have answer on call a number: {1}", e.TelephoneNumber, e.CalledTelephoneNumber); } else { Console.WriteLine("Terminal with number: {0}, have rejected call", e.TelephoneNumber); } }
public ActionResult Create([Bind(Include = "Id,AnswerId,ClientTime,Answer")] AnswerEvent answerEvent) { if (ModelState.IsValid) { answerEvent.Id = Guid.NewGuid(); db.AnswerEvents.Add(answerEvent); db.SaveChanges(); return(RedirectToAction("Index")); } return(View(answerEvent)); }
public static async Task ProcessEvent(AnswerEvent ev, UrlHelper url, HttpContextBase context) { Trace.WriteLine("Bridged-AnswerEvent", "Events"); var call = new Call { Id = ev.CallId }; var otherCallId = ev.Tag.Split(':').LastOrDefault(); Thread.Sleep(3000); await call.SpeakSentence("You have a dolphin on line 1. Watch out, he's hungry!", string.Format("warning:{0}", otherCallId)); }
public static async Task ProcessEvent(AnswerEvent ev, UrlHelper url, HttpContextBase context, dynamic viewBag) { var user = (ApplicationUser)viewBag.User; var call = (Call)viewBag.Call; if (user == null) { await call.HangUp(); return; } await user.PlayGreeting(call); }
// GET: AnswerEvents/Delete/5 public ActionResult Delete(Guid?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } AnswerEvent answerEvent = db.AnswerEvents.Find(id); if (answerEvent == null) { return(HttpNotFound()); } return(View(answerEvent)); }
private async Task ProcessCatapultFromEvent(AnswerEvent ev) { // "from" number answered a call. speak him a message var call = new Call { Id = ev.CallId }; call.SetClient(Client); var contact = DataProvider.FindContactByPhoneNumber(ev.Tag); if (contact == null) { throw new Exception("Missing contact for number " + ev.Tag); } await call.SpeakSentence(string.Format("We are connecting you to {0}", contact.Name), ev.Tag); }
public void TakeIncomingCall(object sender, CallArgs e) { Console.WriteLine("Incoming call from number: {0} to terminal {1}", e.TelephoneNumber, e.TargetTelephoneNumber); Console.WriteLine("Y-Answer\nN-Rejekt"); char k = Char.ToUpper(Console.ReadKey().KeyChar); if (k == 'Y') { Console.WriteLine(); AnswerEvent?.Invoke(this, new AnswerArgs(e.TelephoneNumber, e.TargetTelephoneNumber, true)); } else if (k == 'N') { Console.WriteLine(); EndCall(); } }
public static async Task ProcessEvent(AnswerEvent ev, UrlHelper url, HttpContextBase context) { Trace.WriteLine("Other-AnswerEvent", "Events"); var call = new Call { Id = ev.CallId }; var conferenceId = context.Application.Get(string.Format("active-conf-{0}", Common.ConferenceNumber)) as string; Thread.Sleep(3000); if (conferenceId != null) { await call.SpeakSentence("You will be join to conference.", string.Format("conference:{0}", conferenceId)); } else { await call.SpeakSentence("We are sorry, the conference is not active.", "terminating"); } }
public void AnswerClick(object sender, EventArgs e) { label = sender as Label; label.BackColor = Color.Orange; label.ForeColor = Color.White; // label.Text.Substring(2); // Thread.Sleep(2000); foreach (Answer item in question.answers) { if (item.ToString() == label.Text.Substring(2)) { AnswerEvent?.Invoke(sender, new AnswerEventArgs() { answer = item, num = uint.Parse(labels[indexlabels].Text.Substring((indexlabels >= 9 ? 6 : 5))) }); } } }
public static async Task ProcessEvent(AnswerEvent ev, UrlHelper url, HttpContextBase context, dynamic viewBag) { var call = (Call)viewBag.Call; var dbContext = context.GetOwinContext().Get <ApplicationDbContext>(); var user = await dbContext.Users.FirstOrDefaultAsync(u => u.PhoneNumber == ev.From); if (user == null) { await call.HangUp(); return; } var activeCall = new ActiveCall { Id = ev.CallId, User = user }; dbContext.ActiveCalls.Add(activeCall); await dbContext.SaveChangesAsync(); RunAsyncWithDelay(TimeSpan.FromSeconds(2), async() => await MainMenu(call)); }
public void AnswerCall(PhoneNumber targetNumber, RespondState state) { AnswerEvent?.Invoke(this, new EventArgsAnswer(phoneNumber, targetNumber, state)); }
public virtual void DoAnswerEvent(int objectNumber, StatusCall status, Guid id) //генерация события { AnswerEvent?.Invoke(this, new AnswerArgsEvent(_number, objectNumber, status, id)); //запуск события }
public void AnswerToCall(int target, CallState state) { AnswerEvent?.Invoke(this, new EventArgsAnswer(TelephonNumber, target, state)); }
public void Answer(int fromNumber) { AnswerEvent?.Invoke(this, new CallEventArgs(fromNumber, TelephoneNumber)); }
protected virtual void OnAnswerEvent(CallEventArgs e) { AnswerEvent.Invoke(this, e); }
public void AnswerToCall(string incoming, CallState state) { AnswerEvent?.Invoke(this, new AnswerEventArgs(incoming, PhoneNumber, state)); }
private async Task ProcessCalledToOwnerEvent(AnswerEvent ev, TinyIoCContainer container) { var call = new Call {Id = ev.CallId}; await call.SpeakSentence("Welcome to the conference"); CurrentCall = call; await Conference.Create(new Dictionary<string, object> { {"from", Context.Items["servicePhoneNumber"]}, {"callbackUrl", $"{Context.Items["baseUrl"]}/conference-callback"} }); }
private async Task ProcessCalledToContactEvent(AnswerEvent ev, TinyIoCContainer container) { var conference = CurrentConference; if (conference != null) { await conference.CreateMember(new Dictionary<string, object> {{"callId", ev.CallId}}); } }
private void AnswerTo(object sender, AnswerEvent e) { this.RaiseAnswerToEvent(e); }
private async Task ProcessCalledToAgentEvent(AnswerEvent ev, TinyIoCContainer container) { var call = new Call {Id = ev.CallId}; var phoneNumber = container.Resolve<string>("phoneNumber"); await call.CreateGather("Agent from " + phoneNumber + " would like to join you to the conference. Press 1 to accept, Press 2 to decline."); }
private void OnAnswerEvent(int targetNumber) { AnswerEvent?.Invoke(this, new AnswerEventArgs(targetNumber)); }
public void Answer(object sender, EventArgsAnswer e) { AnswerEvent?.Invoke(this, new EventArgsAnswer(e.Number, e.TargetNumber, e.CurrentState)); }