Exemple #1
0
        public IncomingPhoneNumberResource Hop(
            string twilioAccountSid,
            string relaySid,
            ILogging logging)
        {
            var    original         = IncomingPhoneNumberResource.Fetch(relaySid);
            string relayPhoneNumber = original.PhoneNumber.ToString();

            logging.Log($"Releasing phone number {relayPhoneNumber} {relaySid}");
            IncomingPhoneNumberResource.Delete(relaySid);

            var localAvailableNumbers = LocalResource.Read("US");
            var desiredNumber         = localAvailableNumbers.First();

            logging.Log($"Purchasing new phone number {desiredNumber.PhoneNumber}");

            var newNumber = IncomingPhoneNumberResource.Create(
                twilioAccountSid,
                desiredNumber.PhoneNumber,
                smsMethod: original.SmsMethod,
                smsUrl: original.SmsUrl);

            logging.Log($"New phone number purchased {newNumber.PhoneNumber} {newNumber.Sid}");
            return(newNumber);
        }
Exemple #2
0
    static void Main(string[] args)
    {
        // Find your Account Sid and Auth Token at twilio.com/console
        const string accountSid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
        const string authToken  = "your_auth_token";

        TwilioClient.Init(accountSid, authToken);

        var number = IncomingPhoneNumberResource.Fetch("PN2a0747eba6abf96b7e3c3ff0b4530f6e");

        Console.WriteLine(number.PhoneNumber);
    }
    static void Main(string[] args)
    {
        // Find your Account Sid and Auth Token at twilio.com/console
        // To set up environmental variables, see http://twil.io/secure
        const string accountSid = Environment.GetEnvironmentVariable("TWILIO_ACCOUNT_SID");
        const string authToken  = Environment.GetEnvironmentVariable("TWILIO_AUTH_TOKEN");

        TwilioClient.Init(accountSid, authToken);

        var number = IncomingPhoneNumberResource.Fetch("PN2a0747eba6abf96b7e3c3ff0b4530f6e");

        Console.WriteLine(number.PhoneNumber);
    }
Exemple #4
0
        public static IServiceCollection AddTwilioTextApi(this IServiceCollection services, TextConfig config)
        {
            TwilioClient.Init(config.Twilio.AccountSid, config.Twilio.AuthToken);

            var incoming = IncomingPhoneNumberResource.Fetch(pathSid: config.Twilio.PhoneSid);

            services.Configure <TextServiceSettings>(options => {
                options.AlphaCode   = config.AlphaCode;
                options.PhoneNumber = incoming.PhoneNumber.ToString();
            });

            services.AddScoped <ITextSendService, TwillioTextSendService>();
            return(services);
        }
    static void Main(string[] args)
    {
        // Find your Account Sid and Token at twilio.com/console
        const string accountSid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
        const string authToken  = "your_auth_token";

        TwilioClient.Init(accountSid, authToken);

        var incomingPhoneNumber = IncomingPhoneNumberResource.Fetch(
            pathSid: "PNXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
            );

        Console.WriteLine(incomingPhoneNumber.FriendlyName);
    }
    static void Main(string[] args)
    {
        // Find your Account Sid and Token at twilio.com/console
        // DANGER! This is insecure. See http://twil.io/secure
        const string accountSid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
        const string authToken  = "your_auth_token";

        TwilioClient.Init(accountSid, authToken);

        var incomingPhoneNumber = IncomingPhoneNumberResource.Fetch(
            pathSid: "PN2a0747eba6abf96b7e3c3ff0b4530f6e"
            );

        Console.WriteLine(incomingPhoneNumber.FriendlyName);
    }
        public void TestFetchResponse()
        {
            var twilioRestClient = Substitute.For <ITwilioRestClient>();

            twilioRestClient.AccountSid.Returns("ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX");
            twilioRestClient.Request(Arg.Any <Request>())
            .Returns(new Response(
                         System.Net.HttpStatusCode.OK,
                         "{\"account_sid\": \"ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"address_requirements\": \"none\",\"address_sid\": \"ADaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"api_version\": \"2010-04-01\",\"beta\": false,\"capabilities\": {\"mms\": true,\"sms\": false,\"voice\": true},\"date_created\": \"Thu, 30 Jul 2015 23:19:04 +0000\",\"date_updated\": \"Thu, 30 Jul 2015 23:19:04 +0000\",\"emergency_status\": \"Active\",\"emergency_address_sid\": \"ADaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"friendly_name\": \"(808) 925-5327\",\"identity_sid\": \"RIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"origin\": \"origin\",\"phone_number\": \"+18089255327\",\"sid\": \"PNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"sms_application_sid\": \"\",\"sms_fallback_method\": \"POST\",\"sms_fallback_url\": \"\",\"sms_method\": \"POST\",\"sms_url\": \"\",\"status_callback\": \"\",\"status_callback_method\": \"POST\",\"trunk_sid\": null,\"uri\": \"/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/IncomingPhoneNumbers/PNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.json\",\"voice_application_sid\": \"\",\"voice_caller_id_lookup\": false,\"voice_fallback_method\": \"POST\",\"voice_fallback_url\": null,\"voice_method\": \"POST\",\"voice_url\": null}"
                         ));

            var response = IncomingPhoneNumberResource.Fetch("PNXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", client: twilioRestClient);

            Assert.NotNull(response);
        }
        public VoipPhone GetPhone(string phoneSid)
        {
            var phone = IncomingPhoneNumberResource.Fetch(phoneSid, client: client);

            var result = new TwilioPhone(client)
            {
                Id = phone.Sid, Number = phone.PhoneNumber.ToString(), Settings = new TwilioVoipSettings()
            };

            if (phone.VoiceUrl == null)
            {
                result.Settings.VoiceUrl = result.Settings.Connect(false);
            }

            return(result);
        }
        public void TestFetchRequest()
        {
            var twilioRestClient = Substitute.For <ITwilioRestClient>();
            var request          = new Request(
                HttpMethod.Get,
                Twilio.Rest.Domain.Api,
                "/2010-04-01/Accounts/ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/IncomingPhoneNumbers/PNXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.json",
                ""
                );

            twilioRestClient.AccountSid.Returns("ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX");
            twilioRestClient.Request(request).Throws(new ApiException("Server Error, no content"));

            try
            {
                IncomingPhoneNumberResource.Fetch("PNXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", client: twilioRestClient);
                Assert.Fail("Expected TwilioException to be thrown for 500");
            }
            catch (ApiException) {}
            twilioRestClient.Received().Request(request);
        }
Exemple #10
0
        public void ConfigureServices(IServiceCollection services)
        {
            var db       = new DatabaseConfig();
            var mqtt     = new MqttConfig();
            var timeouts = new TimeoutConfig();
            var mail     = new MailConfig();
            var text     = new TextConfig();

            this.Configuration.GetSection("Mail").Bind(mail);
            this.Configuration.GetSection("Database").Bind(db);
            this.Configuration.GetSection("Mqtt").Bind(mqtt);
            this.Configuration.GetSection("Timeouts").Bind(timeouts);
            this.Configuration.GetSection("Text").Bind(text);

            var privatemqtt = mqtt.InternalBroker;

            services.AddConnectionStrings(db.Networking.ConnectionString, db.SensateIoT.ConnectionString);
            services.AddAuthorizationContext();
            services.AddNetworkingContext();
            services.AddDocumentStore(db.MongoDB.ConnectionString, db.MongoDB.DatabaseName, db.MongoDB.MaxConnections);
            services.Configure <TimeoutConfig>(this.Configuration.GetSection("Timeouts"));

            services.Configure <MqttConfig>(this.Configuration.GetSection("Mqtt"));
            services.Configure <MetricsOptions>(this.Configuration.GetSection("HttpServer:Metrics"));
            services.AddHostedService <MetricsService>();

            services.AddInternalMqttService(options => {
                options.Ssl        = privatemqtt.Ssl;
                options.Host       = privatemqtt.Host;
                options.Port       = privatemqtt.Port;
                options.Username   = privatemqtt.Username;
                options.Password   = privatemqtt.Password;
                options.Id         = Guid.NewGuid().ToString();
                options.TopicShare = "$share/triggers/";
            });

            services.Configure <RouterSettings>(s => {
                s.Host   = this.Configuration.GetValue <string>("Router:Host");
                s.Port   = this.Configuration.GetValue <ushort>("Router:Port");
                s.Secure = this.Configuration.GetValue <bool>("Router:Secure");
            });

            if (mail.Provider == "SendGrid")
            {
                services.AddSingleton <IEmailSender, SendGridMailer>();
                services.Configure <SendGridAuthOptions>(opts => {
                    opts.FromName = mail.FromName;
                    opts.From     = mail.From;
                    opts.Key      = mail.SendGrid.Key;
                    opts.Username = mail.SendGrid.Username;
                });
            }
            else if (mail.Provider == "SMTP")
            {
                services.AddSingleton <IEmailSender, SmtpMailer>();
                services.Configure <SmtpAuthOptions>(opts => {
                    opts.FromName = mail.FromName;
                    opts.From     = mail.From;
                    opts.Password = mail.Smtp.Password;
                    opts.Username = mail.Smtp.Username;
                    opts.Ssl      = mail.Smtp.Ssl;
                    opts.Port     = mail.Smtp.Port;
                    opts.Host     = mail.Smtp.Host;
                });
            }

            if (text.Provider == "Twillio")
            {
                TwilioClient.Init(text.Twilio.AccountSid, text.Twilio.AuthToken);

                var incoming = IncomingPhoneNumberResource.Fetch(pathSid: text.Twilio.PhoneSid);
                services.Configure <TextServiceSettings>(options => {
                    options.AlphaCode   = text.AlphaCode;
                    options.PhoneNumber = incoming.PhoneNumber.ToString();
                });

                services.AddScoped <ITextSendService, TwillioTextSendService>();
            }
            else
            {
                throw new InvalidOperationException("Text provider not configured!");
            }

            services.AddScoped <IControlMessageRepository, ControlMessageRepository>();
            services.AddScoped <ITriggerRepository, TriggerRepository>();
            services.AddScoped <IControlMessageRepository, ControlMessageRepository>();
            services.AddScoped <ITriggerActionExecutionService, TriggerActionExecutionService>();

            services.AddSingleton <IDataPointMatchingService, DataPointMatchingService>();
            services.AddSingleton <IRegexMatchingService, RegexMatchingService>();
            services.AddSingleton <IRouterClient, RouterClient>();
            services.AddSingleton <IEmailSender, SmtpMailer>();
            services.AddSingleton <ITriggerActionCache, TriggerActionCache>();

            services.AddHostedService <TriggerActionReloadService>();

            services.AddHttpClient();
            services.AddMqttHandlers();
        }