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); } } }