Example #1
0
        public static async Task <FaxResource> SendFaxAsync(ITwilioRestClient client, string from, string to, Uri mediaUrl, FaxResource.QualityEnum quality = null, string sipAuthUsername = null, string sipAuthPassword = null, Uri statusCallback = null, bool?storeMedia = null, int?minutesToSend = null)
        {
            var options = new CreateFaxOptions(to, mediaUrl)
            {
                From            = from,
                Quality         = quality ?? FaxResource.QualityEnum.Standard,
                SipAuthUsername = sipAuthUsername,
                SipAuthPassword = sipAuthPassword,
                StatusCallback  = statusCallback,
                StoreMedia      = storeMedia,
                Ttl             = minutesToSend
            };

            return(await FaxResource.CreateAsync(options, client));
        }
        public async Task <IActionResult> Post()
        {
            Logger.LogInformation("Outgoing Request:\n{0}", JsonConvert.SerializeObject(Request.Form));
            var msg = CreateOutgoingMessage();

            try
            {
                // TODO: check from domain
                dynamic envelope = JsonConvert.DeserializeObject(Request.Form["envelope"]);
                // Send FAX
                TwilioClient.Init(Settings.Twilio.UserName, Settings.Twilio.Password);
                var options = await ParseRequest(Request);

                Logger.LogDebug("Request to Twilio:\n{0}", JsonConvert.SerializeObject(options));
                var result = await FaxResource.CreateAsync(options, TwilioClient.GetRestClient());

                Logger.LogDebug("Result from Twilio:\n{0}", JsonConvert.SerializeObject(result));
                // Store reply message
                Cache.Set(result.Sid, msg);
            }
            catch (ArgumentException exn)
            {
                Logger.LogError(exn, "Bad request");
                SetErrorMessage(msg, Request.Form, "Bad request", exn);
                await msg.SendAsync(Settings.SendGrid);
            }
            catch (Twilio.Exceptions.TwilioException exn)
            {
                Logger.LogError(exn, "Request to Twilio failed");
                SetErrorMessage(msg, Request.Form, "Request to Twilio failed", exn);
                await msg.SendAsync(Settings.SendGrid);
            }
            catch (Exception exn)
            {
                Logger.LogError(exn, "Internal error");
                return(StatusCode(500));
            }
            return(Ok());
        }