Beispiel #1
0
        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 }
                });
            }
        }
Beispiel #2
0
        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));
        }
Beispiel #3
0
        /// <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"));
        }
Beispiel #7
0
 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;
 }
Beispiel #8
0
        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");
        }
Beispiel #9
0
        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");
        }
Beispiel #10
0
 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));
 }
Beispiel #12
0
 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));
        }
Beispiel #14
0
        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));
        }
Beispiel #17
0
        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);
        }
Beispiel #18
0
        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();
            }
        }
Beispiel #19
0
        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");
            }
        }
Beispiel #20
0
        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));
        }
Beispiel #22
0
 public void AnswerCall(PhoneNumber targetNumber, RespondState state)
 {
     AnswerEvent?.Invoke(this, new EventArgsAnswer(phoneNumber, targetNumber, state));
 }
Beispiel #23
0
 public virtual void DoAnswerEvent(int objectNumber, StatusCall status, Guid id)        //генерация события
 {
     AnswerEvent?.Invoke(this, new AnswerArgsEvent(_number, objectNumber, status, id)); //запуск события
 }
Beispiel #24
0
 public void AnswerToCall(int target, CallState state)
 {
     AnswerEvent?.Invoke(this, new EventArgsAnswer(TelephonNumber, target, state));
 }
Beispiel #25
0
 public void Answer(int fromNumber)
 {
     AnswerEvent?.Invoke(this, new CallEventArgs(fromNumber, TelephoneNumber));
 }
Beispiel #26
0
 protected virtual void OnAnswerEvent(CallEventArgs e)
 {
     AnswerEvent.Invoke(this, e);
 }
Beispiel #27
0
 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}});
     }
 }
Beispiel #30
0
 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.");
 }
Beispiel #32
0
 private void OnAnswerEvent(int targetNumber)
 {
     AnswerEvent?.Invoke(this, new AnswerEventArgs(targetNumber));
 }
Beispiel #33
0
 public void Answer(object sender, EventArgsAnswer e)
 {
     AnswerEvent?.Invoke(this, new EventArgsAnswer(e.Number, e.TargetNumber, e.CurrentState));
 }