예제 #1
0
        protected override void ExecuteNoun(NativeActivityContext context)
        {
            var twilio = context.GetExtension <ITwilioContext>();

            // insert Sip element
            var element = new XElement("Sip");

            GetElement(context).Add(element);

            if (Called != null)
            {
                // url attribute will execute the Called activity
                element.Add(new XAttribute("url",
                                           twilio.ResolveBookmarkUrl(context.CreateTwilioBookmark(OnCalled))));
            }

            // schedule URI activities
            if (Uris.Count > 0)
            {
                twilio.SetElement(context, element);
                foreach (var uri in Uris)
                {
                    context.ScheduleActivity(uri);
                }
            }
        }
예제 #2
0
        protected override void Execute(NativeActivityContext context)
        {
            var twilio      = context.GetExtension <ITwilioContext>();
            var timeout     = Timeout.Get(context);
            var finishOnKey = FinishOnKey.Get(context);
            var numDigits   = NumDigits.Get(context);

            var finishUrl = twilio.ResolveBookmarkUrl(context.CreateTwilioBookmark(OnFinish));

            // append gather element
            var element = new XElement("Gather",
                                       new XAttribute("action", finishUrl),
                                       timeout != null ? new XAttribute("timeout", ((TimeSpan)timeout).TotalSeconds) : null,
                                       finishOnKey != null ? new XAttribute("finishOnKey", finishOnKey) : null,
                                       numDigits != null ? new XAttribute("numDigits", numDigits) : null);

            // write gather element
            GetElement(context).Add(
                element,
                new XElement("Redirect", finishUrl));

            if (Body != null)
            {
                SetElement(context, element);
                context.ScheduleActivity(Body);
            }
        }
예제 #3
0
        protected override void Execute(NativeActivityContext context)
        {
            var twilio      = context.GetExtension <ITwilioContext>();
            var timeout     = Timeout.Get(context);
            var finishOnKey = FinishOnKey.Get(context);
            var maxLength   = MaxLength.Get(context);
            var transcribe  = Transcribe.Get(context);
            var playBeep    = PlayBeep.Get(context);

            var actionUrl = twilio.ResolveBookmarkUrl(context.CreateTwilioBookmark(OnAction));

            // append record element
            var element = new XElement("Record",
                                       new XAttribute("action", actionUrl),
                                       timeout != null ? new XAttribute("timeout", ((TimeSpan)timeout).TotalSeconds) : null,
                                       finishOnKey != null ? new XAttribute("finishOnKey", finishOnKey) : null,
                                       maxLength != null ? new XAttribute("maxLength", ((TimeSpan)maxLength).TotalSeconds) : null,
                                       transcribe != null ? new XAttribute("transcribe", (bool)transcribe ? "true" : "false") : null,
                                       playBeep != null ? new XAttribute("playBeep", (bool)playBeep ? "true" : "false") : null);

            // write dial element and catch redirect
            GetElement(context).Add(
                element,
                new XElement("Redirect", actionUrl));
        }
예제 #4
0
파일: Pause.cs 프로젝트: wasabii/twilio-net
        protected override void Execute(NativeActivityContext context)
        {
            var twilio = context.GetExtension<ITwilioContext>();
            var duration = Duration.Get(context);

            GetElement(context).Add(
                new XElement("Pause",
                    new XAttribute("length", (int)duration.TotalSeconds)),
                new XElement("Redirect",
                    twilio.ResolveBookmarkUrl(context.CreateTwilioBookmark(this))));
        }
예제 #5
0
파일: Pause.cs 프로젝트: sukitha/twilio-net
        protected override void Execute(NativeActivityContext context)
        {
            var twilio   = context.GetExtension <ITwilioContext>();
            var duration = Duration.Get(context);

            GetElement(context).Add(
                new XElement("Pause",
                             new XAttribute("length", (int)duration.TotalSeconds)),
                new XElement("Redirect",
                             twilio.ResolveBookmarkUrl(context.CreateTwilioBookmark(this))));
        }
예제 #6
0
        protected override void Execute(NativeActivityContext context)
        {
            var twilio = context.GetExtension <ITwilioContext>();
            var queue  = Queue.Get(context);

            // enqueue element
            GetElement(context).Add(
                new XElement("Enqueue",
                             new XAttribute("action", twilio.ResolveBookmarkUrl(context.CreateTwilioBookmark(OnFinish))),
                             Wait != null ? new XAttribute("waitUrl", twilio.ResolveBookmarkUrl(context.CreateTwilioBookmark(OnWait))) : null,
                             queue));
        }
예제 #7
0
        /// <summary>
        /// Invoked when the wait bookmark is completed.
        /// </summary>
        /// <param name="context"></param>
        /// <param name="completedInstance"></param>
        void OnWaitComplete(NativeActivityContext context, ActivityInstance completedInstance)
        {
            if (completedInstance.State != ActivityInstanceState.Executing)
            {
                return;
            }

            var twilio = context.GetExtension <ITwilioContext>();

            GetElement(context).Add(
                new XElement("Redirect",
                             twilio.ResolveBookmarkUrl(context.CreateTwilioBookmark(OnWait))));
        }
예제 #8
0
        protected override void ExecuteNoun(NativeActivityContext context)
        {
            var twilio = context.GetExtension<ITwilioContext>();
            var name = Name.Get(context);

            // add new Number element
            var element = new XElement("Queue",
                name);
            GetElement(context).Add(element);

            // bookmark to execute Caller activity
            if (Pickup != null)
                element.Add(new XAttribute("url",
                    twilio.ResolveBookmarkUrl(context.CreateTwilioBookmark(OnPickup))));
        }
예제 #9
0
        protected override void ExecuteNoun(NativeActivityContext context)
        {
            var twilio = context.GetExtension<ITwilioContext>();
            var number = Number.Get(context);
            var sendDigits = SendDigits.Get(context);

            // add new Number element
            var element = new XElement("Number",
                !string.IsNullOrWhiteSpace(sendDigits) ? new XAttribute("sendDigits", sendDigits) : null,
                number);
            GetElement(context).Add(element);

            // bookmark to execute Called activity
            if (Pickup != null)
                element.Add(new XAttribute("url", twilio.ResolveBookmarkUrl(context.CreateTwilioBookmark(OnPickup))));
        }
예제 #10
0
        protected override void ExecuteNoun(NativeActivityContext context)
        {
            var twilio = context.GetExtension <ITwilioContext>();
            var name   = Name.Get(context);

            // add new Number element
            var element = new XElement("Queue",
                                       name);

            GetElement(context).Add(element);

            // bookmark to execute Caller activity
            if (Pickup != null)
            {
                element.Add(new XAttribute("url",
                                           twilio.ResolveBookmarkUrl(context.CreateTwilioBookmark(OnPickup))));
            }
        }
예제 #11
0
        protected override void ExecuteNoun(NativeActivityContext context)
        {
            var twilio     = context.GetExtension <ITwilioContext>();
            var number     = Number.Get(context);
            var sendDigits = SendDigits.Get(context);

            // add new Number element
            var element = new XElement("Number",
                                       !string.IsNullOrWhiteSpace(sendDigits) ? new XAttribute("sendDigits", sendDigits) : null,
                                       number);

            GetElement(context).Add(element);

            // bookmark to execute Called activity
            if (Pickup != null)
            {
                element.Add(new XAttribute("url", twilio.ResolveBookmarkUrl(context.CreateTwilioBookmark(OnPickup))));
            }
        }
예제 #12
0
        protected override void ExecuteNoun(NativeActivityContext context)
        {
            var twilio = context.GetExtension<ITwilioContext>();

            // insert Sip element
            var element = new XElement("Sip");
            GetElement(context).Add(element);

            if (Called != null)
                // url attribute will execute the Called activity
                element.Add(new XAttribute("url",
                    twilio.ResolveBookmarkUrl(context.CreateTwilioBookmark(OnCalled))));

            // schedule URI activities
            if (Uris.Count > 0)
            {
                twilio.SetElement(context, element);
                foreach (var uri in Uris)
                    context.ScheduleActivity(uri);
            }
        }
예제 #13
0
파일: Dial.cs 프로젝트: sukitha/twilio-net
        protected override void Execute(NativeActivityContext context)
        {
            var twilio       = context.GetExtension <ITwilioContext>();
            var timeout      = Timeout.Get(context);
            var hangupOnStar = HangupOnStar.Get(context);
            var timeLimit    = TimeLimit.Get(context);
            var callerId     = CallerId.Get(context);
            var record       = Record.Get(context);

            // dial completion
            var finishUrl = twilio.ResolveBookmarkUrl(context.CreateTwilioBookmark(OnFinish));

            // dial element
            var element = new XElement("Dial",
                                       new XAttribute("action", finishUrl),
                                       timeout != null ? new XAttribute("timeout", ((TimeSpan)timeout).TotalSeconds) : null,
                                       hangupOnStar != null ? new XAttribute("hangupOnStar", (bool)hangupOnStar ? "true" : "false") : null,
                                       timeLimit != null ? new XAttribute("timeLimit", ((TimeSpan)timeLimit).TotalSeconds) : null,
                                       callerId != null ? new XAttribute("callerId", callerId) : null,
                                       record != null ? new XAttribute("record", (bool)record ? "true" : "false") : null);

            // write Dial element
            GetElement(context).Add(
                element,
                new XElement("Redirect", finishUrl));

            // execute nouns
            if (Activities.Count > 0)
            {
                // schedule nouns with reference to Dial element
                twilio.SetElement(context, element);
                foreach (var noun in Activities)
                {
                    context.ScheduleActivity(noun);
                }
            }
        }