Beispiel #1
0
        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);
                }
            }
        }