Вступление
- Эффективное использование SMS-сообщений в облачном контексте. Существует множество приложений, которые могут быть построены на методах, которые я иллюстрирую. Представьте, что у вас есть облачный сервис, который отвечает на SMS-сообщения. Вот некоторые примеры:
- Представьте, что вы выступаете на конференции и хотите получить адреса электронной почты от аудитории. Это пример использования, который я продемонстрирую.
- Вы можете отправить SMS-сообщение «ВРЕМЯ, ЯПОНИЯ», и облако отправит ответ
- Список можно продолжить. Использовать свое воображение.
- Мое решение использует Twilio из .net. Мне показалось сложным руководство по созданию этого подхода. Я и мой коллега сочли это довольно сложным для реализации. Это заняло много часов экспериментов.
Предпосылки
- Зарегистрируйте учетную запись Azure
- Вы можете сделать это здесь: http://bit.ly/azuretestdrive
- Зарегистрировать аккаунт Twilio
- Twilio позволяет перенаправлять SMS-сообщения в свою учетную запись, размещенную в Azure, а затем из Azure на телефон.
- Вы можете зарегистрироваться здесь: http://www.twilio.com/
Есть несколько шагов высокого уровня для подражания:
- Зарегистрируйтесь в Azure, как обсуждалось ранее
- Создайте облачную службу Azure на портале Azure
- В итоге вы получите URL-адрес, который является конечной точкой, которая получит SMS-сообщение, отправленное Twilio.
- Например, эта конечная точка может выглядеть так:
- Напишите наше приложение Azure, которое будет развернуто в центре обработки данных MS.
- Разверните свое приложение в дата-центре MS
- Зарегистрировать учетную запись Twilio
- Вам будет предоставлен номер телефона, на который будет отправлено SMS-сообщение (например, +1 707-999-2736).
- Вы укажете Twilio конечную точку, где развернуто ваше приложение Azure (обсуждалось ранее http://receiveandsendsms.cloudapp.net/SMSHandler.ashx)
- Вы сделали.
- Теперь вы можете писать приложения, которые получают SMS-сообщения и возвращают ответы из облачного приложения.
Регистрация учетной записи Azure
- Регистрация учетной записи Azure означает, что вам нужно перейти по этой ссылке:
- Это не обязательство. Да, вы должны предоставить кредитную карту. Amazon тоже это делает. Это помогает защититься от мошенничества.
Создайте облачную службу Azure на портале Azure
- Вы можете заметить, что я нажал на NEW. Сервис, который я создал, можно увидеть в списке выше. Примечание. «ReceiveAndSendSms» — это имя, которое я лично определил для меня облачной службы. Вам обязательно нужно иметь другое имя. Это становится конечной точкой, http://receiveandsendsms.cloudapp.net
- Если вы не знаете http://www.windowsazure.com/en-us/manage/services/cloud-services/how-to-create-and-deploy-a-cloud-service/
- Как только вы создадите свой сервис, у него будет конечная точка, куда SMS-сообщения будут пересылаться Twilio.
- В моем случае эта конечная точка — http://receiveandsendsms.cloudapp.net. Ваш будет отличаться.
- Вам нужно будет использовать эту конечную точку на портале Twilio. Twilio будет пересылать SMS-сообщения на эту конечную точку. Облачное приложение, которое вы напишите, сможет прочитать эту конечную точку.
Напишите приложение Azure, которое будет развернуто в центре обработки данных MS.
- Вот небольшой учебник, который похож на мой.
- http://msdn.microsoft.com/en-us/library/windowsazure/ee405487.aspx
- Запустите Visual Studio 2010/2012
- Выбрать файл / новый проект
- Выберите шаблон «Облачная / облачная служба Windows Azure».
- Вы укажете «Название проекта» и «Местоположение».
- Вы добавите веб-роль в проект
- Ваше готовое решение будет выглядеть примерно так:
- Теперь нам нужно добавить код, который будет выполняться при получении SMS-сообщения.
- Щелкните правой кнопкой мыши на «веб-роли» и выберите «Добавить / новый элемент». Вы добавите «Универсальный обработчик».
- Вы можете оставить имя по умолчанию Handler1.ashx, если хотите.
- Будет метод со следующей подписью: public void ProcessRequest (контекст HttpContext) {}
- Здесь мы добавим наш код для получения и обработки SMS-сообщения.
- Я также добавлю метод для выполнения вставки в базу данных
- Вот две законченные функции в Handler1.ashx.cs
public void ProcessRequest(HttpContext context) { // Search for the word "Body=" and pluck out the value, which is the sms msg that was sent string srchfor = "Body="; int mylen = srchfor.Length; // Read the sms message sent System.IO.StreamReader reader = new System.IO.StreamReader(HttpContext.Current.Request.InputStream); string requestFromPost = reader.ReadToEnd(); // Find the "Body=" string int offset = requestFromPost.IndexOf(srchfor); int end = requestFromPost.Substring(offset).IndexOf('&') + offset; // Pluck out the value string myval = requestFromPost.Substring(offset + mylen, end - (offset + mylen)); InsertEmail(myval); // Write the upper case version back to the client context.Response.Clear(); context.Response.ContentType = "text/xml"; context.Response.ContentEncoding = System.Text.Encoding.UTF8; string twiMLResponse = null; twiMLResponse = "Your email has been added " + myval + ""; context.Response.Write(twiMLResponse); context.Response.End(); } public void InsertEmail(string email) { try { string connString = "Server=tcp:fj869qmhla.database.windows.net;" + "Database=SMSEmail; User ID=bruno@fj869qmhla;" + "Password=xyz;Trusted_Connection=False;Encrypt=False;"; using (SqlConnection connection = new SqlConnection(connString)) { connection.Open(); SqlCommand cmdInsert = new SqlCommand( string.Format("Insert Into [dbo].[Email]" + "(email) Values" + "('{0}')", email), connection); cmdInsert.ExecuteNonQuery(); } } catch (SqlException ex) { Exception error = new Exception("Failure on Insert!", ex); throw error; } }
Развернуть в облаке
- Существует много способов развертывания в облаке. Вы можете узнать больше здесь:
- http://msdn.microsoft.com/en-us/library/ff683672.aspx
- Я использую метод «Опубликовать». Вы также можете создать пакет, перейти на портал и загрузить его.
База данных
- База данных также размещается в облаке. Я использую базу данных SQL. Вы можете видеть, что я создал базу данных под названием SMSEmail. Я создал таблицу под названием «электронная почта»
- Для получения дополнительной справки см. Эту ссылку Начало работы с базой данных Windows Azure SQL ( http://www.windowsazure.com/en-us/manage/services/sql-databases/getting-started-w-sql-databases/ ).
- Я создал очень простую базу данных с одной таблицей следующим образом:
Настройка Twilio
- Следующим шагом является настройка twilio для указания на наш облачный сервис. Вы можете подписаться на бесплатную учетную запись twilio на их сайте. Здесь есть важная информация.
- Номер телефона — 707-999-2736
- Что пользователи будут использовать для отправки своей электронной почты
- URL запроса SMS
- Указывает на наш развернутый облачный сервис, который обсуждался ранее.
- Номер телефона — 707-999-2736
Мы сделали
- Нам просто нужно отправить текстовое сообщение на номер 707-999-2736. Что бы он ни писал, он сохраняется в базе данных в облаке. Классная вещь.