Twilio Rest API帮助程序库,v 5.0.1,C#-MessageResource.Create函数调用未正确返回 [英] Twilio Rest API Helper Library, v 5.0.1, C# - MessageResource.Create function call not returning properly

查看:58
本文介绍了Twilio Rest API帮助程序库,v 5.0.1,C#-MessageResource.Create函数调用未正确返回的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在C#ASP.NET MVC Web应用程序中使用Twilio REST API帮助程序库5.0.1版.我创建了以下帮助程序类和函数来发送文本消息:

I am using the Twilio REST API helper library, v 5.0.1 in my C# ASP.NET MVC Web Application. I created the following helper class and function to send out text messages:

    using MyApplication.Web.Helpers;
    using System;
    using System.Configuration;
    using Twilio;
    using Twilio.Exceptions;
    using Twilio.Rest.Api.V2010.Account;
    using Twilio.Types;

    namespace MyApplication.Web.Services
    {
        public class TwilioSmsSender : ISmsSender
        {
            public string AccountSid { get; set; }
            public string AuthToken { get; set; }
            public string FromPhoneNumber { get; set; }
            private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
            public string SmsPrefix { get; set; }
            public string SmsSuffix { get; set; }

            public TwilioSmsSender()
            {
                //get our Twilio account info from the config file
                AccountSid = ConfigurationManager.AppSettings["TwilioAccountSid"];
                AuthToken = ConfigurationManager.AppSettings["TwilioAuthToken"];
                FromPhoneNumber = ConfigurationManager.AppSettings["SmsService.FromPhoneNumber"];
                SmsPrefix = ConfigurationManager.AppSettings["SmsPrefix"];
                SmsSuffix = ConfigurationManager.AppSettings["SmsSuffix"];

                if (FromPhoneNumber.Length == 10)
                {
                    FromPhoneNumber = $"+1{FromPhoneNumber}";
                }

                TwilioClient.Init(AccountSid, AuthToken);
            }

            public INotificationResponse SendTextMessage(string phoneNumber, string message, bool useFormatting = true)
            {
                var resp = new TwilioSmsSenderResponse();
                resp.Succeeded = false;
                resp.AttemptDateTimeUtc = DateTime.UtcNow;

                if (useFormatting)
                {
                    message = $"{SmsPrefix}{message}{SmsSuffix}";
                }

                try
                {
                    var msgResponse = MessageResource.Create(
                        to: new PhoneNumber($"+1{phoneNumber}"),
                        from: new PhoneNumber($"{FromPhoneNumber}"),
                        body: message);

                    //Previous line works (i.e, I get the text message that I'm sending out successfully).
                    //However, none of the following lines are running...
                    //As you see, this is in a try/catch block... and it doesn't go to the catch block either!

                    if (msgResponse.ErrorCode == null)
                    {
                        //successfully queued
                        resp.Succeeded = true;
                        resp.ReferenceId = msgResponse.Sid;
                        resp.AttemptDateTimeUtc = DateTime.UtcNow;
                    }
                    else
                    {
                        //Twilio sent an error back
                        log.Info($"Twilio sent an error back: {msgResponse}");
                        resp.Succeeded = false;
                        resp.Notes = $"ErrorCode: {msgResponse.ErrorCode}, ErrorMessage: {msgResponse.ErrorMessage}";
                        resp.AttemptDateTimeUtc = DateTime.UtcNow;
                    }
                }
                catch (Exception e)
                {
                    resp.Succeeded = false;
                    resp.Notes = ExceptionsHelper.GetExceptionDetailsAsString(e);
                    resp.AttemptDateTimeUtc = DateTime.UtcNow;

                    log.Error($"Twilio Error: {resp.Notes}, to: {phoneNumber}, message: {message}");
                }

                return resp;
            }
        }
    }

不幸的是,在MessageResource.Create()调用之后,我的代码无法正常运行.也就是说,短信已正确发送出去,并且我在手机上收到了短信.但是,我希望该调用将控制权返回给我的msgResponse变量,并且我希望

Unfortunately, my code is not behaving as I expected it would after the MessageResource.Create() call. That is, the text-message is sent out correctly and I receive the SMS on my phone. However, I expect the call to return control to my msgResponse variable and I expect the

if (msgResponse.ErrorCode == null) ...

行和随后的行要运行,但是没有发生.我可以在var msgResponse行上放置一个断点,它可以正常运行,但此后不运行任何代码行.您会看到我在尝试/接听电话中.我怀疑发生了一个异常,但似乎并非如此,因为它也没有进入我的捕获块!短信发送成功!我要做的就是找回确认,以便我可以正确地记录该确认并将该信息发送回调用此函数的例程.

line and subsequent lines to run but that is not happening. I can put a breakpoint on the var msgResponse line and it will run that just fine but it does not run any code lines after that. You’ll see that I have the call in a try/catch. I suspected there was an exception that was occurring but it doesn’t seem so because it doesn’t go to my catch block either! The text message is being sent successfully! All I want to do is to get an acknowledgement back so that I can properly log it and send that information back to the routines that are calling this function.

任何帮助将不胜感激!

推荐答案

版本5.0.2为我修复了此问题,只需将twilio更新为5.0.2.他们只是添加了.ConfigureAwait(false);与CreateAsync

version 5.0.2 fixed this for me just update twilio to 5.0.2. they just added .ConfigureAwait(false); with CreateAsync

这篇关于Twilio Rest API帮助程序库,v 5.0.1,C#-MessageResource.Create函数调用未正确返回的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆