Статьи

Использование Windows Azure и Twilio для поддержки SMS в облаке

 Вступление

  1. Эффективное использование SMS-сообщений в облачном контексте. Существует множество приложений, которые могут быть построены на методах, которые я иллюстрирую. Представьте, что у вас есть облачный сервис, который отвечает на SMS-сообщения. Вот некоторые примеры:

    • Представьте, что вы выступаете на конференции и хотите получить адреса электронной почты от аудитории. Это пример использования, который я продемонстрирую.
    • Вы можете отправить SMS-сообщение «ВРЕМЯ, ЯПОНИЯ», и облако отправит ответ
    • Список можно продолжить. Использовать свое воображение.
  2. Мое решение использует Twilio из .net. Мне показалось сложным руководство по созданию этого подхода. Я и мой коллега сочли это довольно сложным для реализации. Это заняло много часов экспериментов.

skmogwrg


Предпосылки

  1. Зарегистрируйте учетную запись Azure

  2. Зарегистрировать аккаунт Twilio

    • Twilio позволяет перенаправлять SMS-сообщения в свою учетную запись, размещенную в Azure, а затем из Azure на телефон.
    • Вы можете зарегистрироваться здесь: http://www.twilio.com/

Есть несколько шагов высокого уровня для подражания:

  1. Зарегистрируйтесь в Azure, как обсуждалось ранее
  2. Создайте облачную службу Azure на портале Azure

    • В итоге вы получите URL-адрес, который является конечной точкой, которая получит SMS-сообщение, отправленное Twilio.
    • Например, эта конечная точка может выглядеть так:

  3. Напишите наше приложение Azure, которое будет развернуто в центре обработки данных MS.
  4. Разверните свое приложение в дата-центре MS
  5. Зарегистрировать учетную запись Twilio

    • Вам будет предоставлен номер телефона, на который будет отправлено SMS-сообщение (например, +1 707-999-2736).
    • Вы укажете Twilio конечную точку, где развернуто ваше приложение Azure (обсуждалось ранее http://receiveandsendsms.cloudapp.net/SMSHandler.ashx)
  6. Вы сделали.
  7. Теперь вы можете писать приложения, которые получают SMS-сообщения и возвращают ответы из облачного приложения.

Регистрация учетной записи Azure

  1. Регистрация учетной записи Azure означает, что вам нужно перейти по этой ссылке:

  2. Это не обязательство. Да, вы должны предоставить кредитную карту. Amazon тоже это делает. Это помогает защититься от мошенничества.

jzc0cphi


Создайте облачную службу Azure на портале Azure


txvrzc3g

  1. Вы можете заметить, что я нажал на NEW. Сервис, который я создал, можно увидеть в списке выше. Примечание. «ReceiveAndSendSms» — это имя, которое я лично определил для меня облачной службы. Вам обязательно нужно иметь другое имя. Это становится конечной точкой, http://receiveandsendsms.cloudapp.net
  2. Если вы не знаете http://www.windowsazure.com/en-us/manage/services/cloud-services/how-to-create-and-deploy-a-cloud-service/
  3. Как только вы создадите свой сервис, у него будет конечная точка, куда SMS-сообщения будут пересылаться Twilio.
  4. В моем случае эта конечная точка — http://receiveandsendsms.cloudapp.net. Ваш будет отличаться.
  5. Вам нужно будет использовать эту конечную точку на портале Twilio. Twilio будет пересылать SMS-сообщения на эту конечную точку. Облачное приложение, которое вы напишите, сможет прочитать эту конечную точку.

Напишите приложение Azure, которое будет развернуто в центре обработки данных MS.

  1. Вот небольшой учебник, который похож на мой.
  2. http://msdn.microsoft.com/en-us/library/windowsazure/ee405487.aspx
  3. Запустите Visual Studio 2010/2012
  4. Выбрать файл / новый проект
  5. Выберите шаблон «Облачная / облачная служба Windows Azure».

n3n0ffan

  1. Вы укажете «Название проекта» и «Местоположение».
  2. Вы добавите веб-роль в проект

q0t2uaae

  1. Ваше готовое решение будет выглядеть примерно так:

cyw4etuo

  1. Теперь нам нужно добавить код, который будет выполняться при получении SMS-сообщения.
  2. Щелкните правой кнопкой мыши на «веб-роли» и выберите «Добавить / новый элемент». Вы добавите «Универсальный обработчик».

wbewc0j1

  1. Вы можете оставить имя по умолчанию Handler1.ashx, если хотите.

syey54xd

  1. Будет метод со следующей подписью: public void ProcessRequest (контекст HttpContext) {}
  2. Здесь мы добавим наш код для получения и обработки SMS-сообщения.
  3. Я также добавлю метод для выполнения вставки в базу данных
  4. Вот две законченные функции в 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;
    }

}

Развернуть в облаке

  1. Существует много способов развертывания в облаке. Вы можете узнать больше здесь:
  2. http://msdn.microsoft.com/en-us/library/ff683672.aspx
  3. Я использую метод «Опубликовать». Вы также можете создать пакет, перейти на портал и загрузить его.

ggjnsenu


База данных

  1. База данных также размещается в облаке. Я использую базу данных SQL. Вы можете видеть, что я создал базу данных под названием SMSEmail. Я создал таблицу под названием «электронная почта»
  2. Для получения дополнительной справки см. Эту ссылку Начало работы с базой данных Windows Azure SQL ( http://www.windowsazure.com/en-us/manage/services/sql-databases/getting-started-w-sql-databases/ ).

aosvghyw

  1. Я создал очень простую базу данных с одной таблицей следующим образом:

y3pjvy52



Настройка Twilio

  1. Следующим шагом является настройка twilio для указания на наш облачный сервис. Вы можете подписаться на бесплатную учетную запись twilio на их сайте. Здесь есть важная информация.

    • Номер телефона — 707-999-2736

      • Что пользователи будут использовать для отправки своей электронной почты
    • URL запроса SMS
    • Указывает на наш развернутый облачный сервис, который обсуждался ранее.

q2deed5m


Мы сделали

  1. Нам просто нужно отправить текстовое сообщение на номер 707-999-2736. Что бы он ни писал, он сохраняется в базе данных в облаке. Классная вещь.