Как отправить текстовое сообщение на мобильный телефон из веб-приложения Lucee?

Я хотел бы, чтобы мое приложение отправляло текстовое сообщение пользователям при определенных триггерах, предпочтительно используя что-то вроде тега cfmail. Мне никогда раньше не приходилось отправлять текстовые сообщения из веб-приложения, но, учитывая огромное количество мобильных устройств, которые существуют сегодня, я предположил, что это будет встроено в CF/Lucee, если оно мне когда-нибудь понадобится. Однако теперь, когда я это делаю, я ничего не вижу в документах или на первых нескольких страницах Google.

Можно ли отправлять текстовые сообщения прямо из Lucee? Я знаю, что могу использовать cfmail для отправки сообщений на шлюз оператора (т. е.: [email protected]), но для этого мне нужно знать и вести список схем адресов каждого оператора, а также знать, с каким оператором работает получатель, что я не мочь. То, что я хочу сделать, возможно только со сторонним сервисом?


person Nicholas    schedule 04.06.2019    source источник
comment
Не уверен, насколько Lucee поддерживает SMS, но вот страница справки CF по SMS helpx.adobe.com/coldfusion/developing-applications/   -  person Redtopia    schedule 04.06.2019


Ответы (3)


Twilio (https://www.twilio.com/try-twilio) упрощает отправлять текстовые сообщения. Все, что вам нужно сделать, это сделать запрос HTTP POST.

Когда вы успешно отправляете сообщение, Twilio отвечает данными о процессе, включая SID сообщения (идентификатор системы).

Вот некоторый код, который вы можете поместить на страницу .cfm и запустить его для отправки сообщения. Замените три PLACEHOLDERS вашими значениями Twilio.

Вы найдете свои учетные данные Twilio ACCOUNT_SID и AUTH_TOKEN на панели инструментов после регистрации или входа в Twilio.

YOUR_TWILIO_PHONE_NUMBER должно начинаться с +.



<cffunction name="sendMessageWithTwilio" output="false" access="public" returnType="string">
    <cfargument name="aMessage" type="string" required="true" />
    <cfargument name="destinationNumber" type="string" required="true" />

    <cfset var twilioAccountSid = "YOUR_ACCOUNT_SID" />
    <cfset var twilioAuthToken = "YOUR_AUTH_TOKEN" />
    <cfset var twilioPhoneNumber = "YOUR_TWILIO_PHONE_NUMBER" />

    <cfhttp 
        result="result" 
        method="POST" 
        charset="utf-8" 
        url="https://api.twilio.com/2010-04-01/Accounts/#twilioAccountSid#/Messages.json"
        username="#twilioAccountSid#"
        password="#twilioAuthToken#" >

        <cfhttpparam name="From" type="formfield" value="#twilioPhoneNumber#" />
        <cfhttpparam name="Body" type="formfield" value="#arguments.aMessage#" />
        <cfhttpparam name="To" type="formfield" value="#arguments.destinationNumber#" />

    </cfhttp>

    <cfif result.Statuscode IS "201 CREATED">
        <cfreturn deserializeJSON(result.Filecontent.toString()).sid />
    <cfelse>
        <cfreturn result.Statuscode />
    </cfif>

</cffunction>

<cfdump var='#sendMessageWithTwilio(
    "This is a test message.",
    "+17775553333"
)#' />


person Alex Baban    schedule 05.06.2019
comment
Я просто хотел остановиться и сказать, что у меня была возможность попробовать это, и это сработало отлично; просто закинул код в свой cfc и все. Я не ожидал такого полного решения в ответе; вы сэкономили мне час или два работы. Спасибо! - person Nicholas; 14.06.2019

Я не знаю, как сделать это изначально в ColdFusion, но я использовал Twilio для отправки SMS-сообщений из ColdFusion с помощью Twilio API: https://www.twilio.com/sms

Они предлагают бесплатные учетные записи разработчиков, так что вы можете попробовать, прежде чем купить.

person Jason Holden    schedule 04.06.2019
comment
Спасибо. Насколько крута кривая обучения? Достаточно ли прост их API, чтобы настроить и написать cfc за одну ночь? - person Nicholas; 04.06.2019
comment
Вот еще один пример его использования: bennadel.com/blog/ Да, это можно сделать за день - person James A Mohler; 04.06.2019

Практически все операторы мобильной связи могут получать электронные письма и пересылать их в виде текстовых (SMS) сообщений.

Мы храним таблицу БД, заполненную всеми текущими операторами связи и их доменами электронной почты в текст. Пользователь может обновить свой профиль, указав номер своего мобильного телефона, и должен выбрать оператора мобильной связи, прежде чем он получит возможность получать текстовые сообщения.

С сайта AT&T:

Текстовое сообщение. Составьте новое электронное письмо и введите 10-значный номер беспроводной сети получателя, а затем @txt.att.net. Например, [email protected].

Изображение или видеосообщение. Составьте новое электронное письмо и введите 10-значный номер беспроводной сети получателя, а затем @mms.att.net. Например, [email protected].

Вы просто используете <cfmail> для отправки текстовых сообщений, как если бы это были обычные электронные письма.

person Adrian J. Moreno    schedule 04.06.2019
comment
Я рассматривал это изначально, но это создает две проблемы. Во-первых, нам нужно поддерживать эту базу данных, и если оператор связи когда-либо изменит свой формат, наша система перестанет работать. Что еще более важно, нам нужно знать, на каком носителе находится получатель, что для нас почти невозможно; у нас часто есть только имя и номер телефона. - person Nicholas; 04.06.2019
comment
Это вполне понятно. За последние пару лет нам пришлось изменить эту базу данных всего несколько раз: добавить Google и пару других новых операторов мобильной связи, а также отказаться от поддержки некоторых ныне несуществующих операторов. Наш пользовательский интерфейс обеспечивает выбор оператора связи пользователем, но если вы не можете сделать то же самое, то это не вариант. - person Adrian J. Moreno; 05.06.2019