Node js отправить смс на телефон
Интеграция c SMSPILOT поможет вам решить повседневные задачи по общению с клиентами, налаживанию коммуникаций с сотрудниками, а также задачи оптимизации различных технологических и бизнес-процессов.
Полная документация
Быстрый старт
API-ключ
API-ключ - это 64-символьная строка, которая служит для авторизации внешних приложений.
API-ключ можно скопировать из настроек: Личный кабинет → Настройки → API
Для тестирования можно использовать ключ эмулятор (реальной отправки SMS не происходит).
API SMS (отправка SMS)
Рекомендуется получать статусы в реальном времени (см. callback), или периодически проверять методом check.
Пример 1. Минимальный код, 79087964781 - замените на свой номер, а XYZ замените на свой API-ключ
Пример 2. Отправка SMS через шлюз SMSPILOT на чистом PHP (без CURL)
Пример 4. Используем библиотеку PHP для отправки SMS
— Node.js разработчикм могут посмотреть устаревший модуль от corpix-а здесь SMS на Node.js
— Delphi разработчики могут скачать проект SMS на Delphi 7, а также SMS на Delphi XE
— Perl разработчикам рекомендуем модуль Net::SMS::SMSPilot (Даниил Путилин, независимый разработчик)
Скрипт sendsms.sh для отправки SMS из консоли Linux (CentOS,Ubuntu,Debian,Fedora. )
С помощью API-1 SMS можно отправлять одиночные SMS или одинаковые SMS на несколько номеров.
Для пакетной проверки персональных SMS используйте API-2 SMS.
API HLR (Обслуживается или нет)
HLR (Home Location Register) - операторская база данных об абонентах сотовых сетей GSM. HLR-запросы нужны для проверки статуса и очистка баз данных от неактуальных номеров. Запросы позволяют установить состояние номера телефона клиента - активен или не обслуживается (так же возможно, но не гарантируется установление нахождения абонента в роуминге или в домашней сети, MCC/MNC код мобильного оператора).
HLRVIP отличается от HLR тем, что операторам которые плохо поддерживают HLR отправляется PING, а также шлюз пытается извлечь доп. параметры (например imsi)
Рекомендуется получать статусы в реальном времени (см. callback), или периодически проверять методом check.
удачный ответ, код HLR-запроса
после получения ответа от оператора, если абонент обслуживается, то наш сервер вызовет указанный скрипт
если абонент не обслуживается, то status=-1
С помощью API-1 HLR можно отправлять проверять один или несколько номеров.
Для пакетной проверки номеров удобнее API-2 HLR
API PING (абонент в сети или нет)
Рекомендуется получать статусы в реальном времени (см. callback), или периодически проверять методом check.
С помощью API-1 PING можно проверять один или несколько номеров.
Для пакетной проверки номеров удобнее API-2 PING
API VOICE (Голосовые уведомления, звонки)
Для отправки голосовых уведомлений измените имя отправителя на GOLOS
или текст ошибки
API SMS2WEB (Приём входящих SMS)
Пусть клиенты напишут вам, а вы сможете программно обработать SMS, отправленные абонентами на общий сервисный номер
Как это работает:
Статус
Рекомендуется получать статусы в реальном времени (см. callback), или периодически проверять методом check через API-1 или API-2.
Для NodeJS
var login = "login" ,
password = "password" ,
sender ,
log = console . log ;
var PHONE_TYPES = 'string' : 1 ,
'number' : 2
>;
var isInArr = function ( arr , val ) if (! arr || ! arr . length ) return false ;
return arr . indexOf ( val ) !== - 1 ;
>;
var convert_data = function ( data , notConvert ) if ( data . fmt ) delete data . fmt ;
if ( data . msg ) data . mes = data . msg ;
delete data . msg ;
> if ( data . message ) data . mes = data . message ;
delete data . message ;
> if ( data . phone && ! isInArr ( notConvert , 'phone' )) data . phones = data . phone ;
delete data . phone ;
> if ( data . number ) data . phones = data . number ;
delete data . number ;
>
if ( data .list) var list = '' ;
for (var i in data .list) list += i + ':' + data .list[ i ]+ '\n' ;
>
data .list = list;
delete data . mes ;
>
if ( data . phones && !( typeof data . phones in PHONE_TYPES )) data . phones = data . phones . join ( ',' );
>;
var convert_files = function ( form , data ) if (! data . files ) return;
if ( typeof data . files === 'string' ) var f = data . files ;
var bin = fs . readFileSync ( f );
form . append ( i , bin , filename : f
>);
return;
>
for (var i in data . files ) var f = data . files [ i ];
var bin = fs . readFileSync ( f );
form . append ( i , bin , filename : f
>);
>
delete data . files ;
>;
var read_url = function ( prs , clb , notConvert ) var fmt = prs . fmt ? prs . fmt : def_fmt ;
var fd = new FormData ();
fd . append ( 'fmt' , fmt );
fd . append ( 'login' , login );
fd . append ( 'psw' , password );
fd . append ( 'charset' , charset );
if ( prs . type ) fd . append ( prs . type , 1 );
if ( prs . data ) convert_data ( prs . data , notConvert );
if ( prs . data . files ) convert_files ( fd , prs . data );
>
for (var i in prs . data ) fd . append ( i , prs . data [ i ]);
>
>
var www = '' ;
var count = 0 ;
var submit = function () fd . submit ( get_host ( www ) + prs . file , function ( err , res )
if ( err ) if ( count ++ < 5 ) www = 'www' +( count !== 1 ? count : '' )+ '.' ;
submit ();
>
else var error = error : "Server Not Work" ,
error_code : 100
>;
clb ( error , JSON . stringify ( error ), error . error , error . error_code );
>
return;
>
res . setEncoding ( charset );
res . on ( 'data' , function ( data ) full_data += data ;
>);
res . on ( 'end' , function ( data ) if ( clb ) var d = JSON . parse ( full_data );
clb ( d , full_data , d . error_code ? d . error : null , d . error_code ? d . error_code : null );
>
>);
// Конфигурирование
this . configure = function ( prs ) ssl = !! prs . ssl ;
login = prs . login ;
password = prs . password ;
if ( prs . charset ) charset = prs . charset ;
>;
if ( data . phone && !( typeof data . phone in PHONE_TYPES )) data . phone = data . phone . join ( ',' );
>
read_url ( file : 'status.php' ,
data : data
>, clb , [ 'phone' ]);
>;
// Получение баланса
this . get_balance = function ( clb ) read_url ( file : 'balance.php' ,
data : cur : 1
>
>, function ( b , r , e , c ) clb ( e ? 0 : b . balance , r , e , c );
>);
>;
// Запрос к API
this . raw = function ( file , data , clb ) read_url ( file : file ,
data : data
>, clb );
>;
// Тестирование подключения и данных авторизации
this . test = function ( clb ) read_url ( file : 'balance.php'
>, function ( d , r , err ) clb ( err );
>);
>;
module . exports = new Api ();
Пример использования библиотеки:
var smsc = require( './smsc/smsc.js' );
smsc . configure ( login : 'alex' ,
password : '123' ,
//ssl : true/false,
//charset : 'utf-8',
>);
// Проверка авторизации
smsc . test (function ( err ) if ( err ) return console . log ( 'error: ' + err );
.
>);
// Отправка SMS
smsc . send_sms ( phones : [ '79999999999' , '79999999999' ],
mes : 'Привет!'
>, function ( data , raw , err , code ) if ( err ) return console . log ( err , 'code: ' + code );
console . log ( data ); // object
console . log ( raw ); // string in JSON format
>);
// Обращение к скриптам API
smsc . raw ( 'send.php' , phones : '79999999999,79999999999' ,
mes : 'Hello!'
>, function ( data , raw , err , code ) if ( err ) return console . log ( err , 'code: ' + code );
console . log ( data ); // object
console . log ( raw ); // string in JSON format
>);
// Получение баланса
smsc . get_balance (function ( balance , raw , err , code ) if ( err ) return console . log ( err , 'code: ' + code );
console . log ( balance );
>);
SMS можно получать и отправлять с номеров телефонов в США. Номера телефонов из других регионов пока не поддерживаются SMS Службы коммуникации. Дополнительные сведения см. на странице Типы номеров телефона .
Выполнение этого краткого руководства предполагает небольшую дополнительную плату в несколько центов США в учетной записи Azure.
Итоговый код для этого краткого руководства можно найти на сайте GitHub.
Предварительные требования
Проверка предварительных условий
Настройка
Измените каталог на только что созданную папку приложения и выполните команду dotnet build , чтобы скомпилировать приложение.
Установка пакета
Объектная модель
Аутентификация клиента
Откройте Program.cs в текстовом редакторе и замените текст метода Main кодом, чтобы инициализировать SmsClient с помощью строки подключения. Приведенный ниже код извлекает строку подключения для ресурса из переменной среды с именем COMMUNICATION_SERVICES_CONNECTION_STRING . См. сведения о том, как управлять строкой подключения ресурса.
Обратите внимание, что номера телефонов должны быть указаны в формате международного стандарта E.164 (например, +14255550123). Номер телефона в поле From также может быть представлен в виде краткого кода (например, 23456).
Обратите внимание, что номера телефонов должны быть указаны в формате международного стандарта E.164 (например, +14255550123). Номер телефона в поле From также может быть представлен в виде краткого кода (например, 23456).
Для применения тега к отчету о доставке используется Tag
Выполнение кода
Запустите приложение из каталога приложения с помощью команды dotnet run .
Пример кода
Пример приложения можно скачать в репозитории GitHub.
Выполнение этого краткого руководства предполагает небольшую дополнительную плату в несколько центов США в учетной записи Azure.
Итоговый код для этого краткого руководства можно найти на сайте GitHub.
Предварительные требования
Проверка предварительных условий
- В терминале или командном окне воспользуйтесь node --version , чтобы проверить, установлен ли пакет Node.js.
- Чтобы просмотреть номера телефонов, связанные с ресурсом Служб коммуникации, войдите на портал Azure, перейдите к ресурсу Служб коммуникации и откройте вкладку с номерами телефонов в области навигации слева.
Настройка
Создание нового приложения Node.js
Откройте терминал или командное окно, создайте каталог для своего приложения и перейдите к нему.
Воспользуйтесь командой npm init -y , чтобы создать файл package.json с параметрами по умолчанию.
Используйте текстовый редактор, чтобы создать файл с именем send-sms.js в корневом каталоге проекта. В следующих разделах показано, как добавить в этот файл весь исходный код для примера из этого краткого руководства.
Установка пакета
Используйте команду npm install , чтобы установить пакет SDK Служб коммуникации Azure для SMS для JavaScript.
Параметр --save указывает библиотеку как зависимость в файле пакета package.json.
Объектная модель
Следующие классы и интерфейсы реализуют некоторые основные функции пакета SDK для SMS Служб коммуникации для Node.js.
Аутентификация клиента
Импортируйте SmsClient из пакета SDK и создайте его экземпляр с помощью строки подключения. Приведенный ниже код извлекает строку подключения для ресурса из переменной среды с именем COMMUNICATION_SERVICES_CONNECTION_STRING . См. сведения о том, как управлять строкой подключения ресурса.
Создайте и откройте файл с именем send-sms.js и добавьте следующий код:
Обратите внимание, что номера телефонов должны быть указаны в формате международного стандарта E.164 (например, +14255550123). Номер телефона в поле From также может быть представлен в виде краткого кода (например, 23456).
Кроме того, вы можете передать объект параметров для указания того, должен ли быть включен отчет о доставке, а также задать пользовательские теги.
Обратите внимание, что номера телефонов должны быть указаны в формате международного стандарта E.164 (например, +14255550123). Номер телефона в поле From также может быть представлен в виде краткого кода (например, 23456).
Выполнение кода
Используйте команду node , чтобы выполнить код, добавленный в файл send-sms.js.
Выполнение этого краткого руководства предполагает небольшую дополнительную плату в несколько центов США в учетной записи Azure.
Итоговый код для этого краткого руководства можно найти на сайте GitHub.
Предварительные требования
Проверка предварительных условий
- В окне терминала или команды выполните команду python --version , чтобы проверить, установлен ли пакет Python.
- Чтобы просмотреть номера телефонов, связанные с ресурсом Служб коммуникации, войдите на портал Azure, перейдите к ресурсу Служб коммуникации и откройте вкладку с номерами телефонов в области навигации слева.
Настройка
Создание приложения Python
Откройте терминал или командное окно, создайте каталог для своего приложения и перейдите к нему.
Используйте текстовый редактор, чтобы создать файл с именем send-sms.py в корневом каталоге проекта и добавить структуру для программы, включая базовую обработку исключений. В следующих разделах показано, как добавить в этот файл весь исходный код для примера из этого краткого руководства.
Установка пакета
Оставаясь в каталоге приложения, установите пакет SDK для SMS Служб коммуникации для пакета Python с помощью команды pip install .
Объектная модель
Следующие классы и интерфейсы реализуют некоторые основные функции пакета SDK для SMS Служб коммуникации для Python.
Аутентификация клиента
Создайте экземпляр SmsClient с использованием строки подключения. См. сведения о том, как управлять строкой подключения ресурса.
Для простоты в этом кратком руководстве мы используем строки подключения. Но в рабочих средах мы рекомендуем использовать субъекты-служб.
Обратите внимание, что номера телефонов должны быть указаны в формате международного стандарта E.164 (например, +14255550123). Номер телефона в поле From также может быть представлен в виде краткого кода (например, 23456).
Обратите внимание, что номера телефонов должны быть указаны в формате международного стандарта E.164 (например, +14255550123). Номер телефона в поле From также может быть представлен в виде краткого кода (например, 23456).
Необязательные параметры
tag — это необязательный параметр, который можно использовать для применения тегов к отчету о доставке.
Выполнение кода
Запустите приложение из каталога приложения с помощью команды python .
Полный скрипт Python должен выглядеть примерно следующим образом:
Выполнение этого краткого руководства предполагает небольшую дополнительную плату в несколько центов США в учетной записи Azure.
Итоговый код для этого краткого руководства можно найти на сайте GitHub.
Предварительные требования
Проверка предварительных условий
- В терминале или командном окне воспользуйтесь mvn -v , чтобы проверить, установлен ли пакет maven.
- Чтобы просмотреть номера телефонов, связанные с ресурсом Служб коммуникации, войдите на портал Azure, перейдите к ресурсу Служб коммуникации и откройте вкладку с номерами телефонов в области навигации слева.
Настройка
Создание нового приложения Java
Откройте терминал или командное окно и перейдите в каталог, в котором необходимо создать приложение Java. Выполните приведенную ниже команду, чтобы создать проект Java из шаблона maven-archetype-quickstart.
Цель generate создаст каталог с тем же именем, что и у artifactId. В этом каталоге каталог src/main/java содержит исходный код проекта, каталог src/test/java содержит источник теста, а файл pom.xml является объектной моделью проекта (POM).
Установка пакета
Откройте файл pom.xml в текстовом редакторе. Добавьте приведенный ниже элемент зависимости в группу зависимостей.
Настройка платформы приложения
Откройте /src/main/java/com/communication/quickstart/App.java в текстовом редакторе, добавьте директивы импорта и удалите оператор System.out.println("Hello world!"); :
Объектная модель
Следующие классы и интерфейсы реализуют некоторые основные функции пакета SDK для SMS Служб коммуникации для Java.
Аутентификация клиента
Добавьте следующий код в метод main :
Чтобы не указывать конечную точку и ключ доступа, вы можете указать всю строку подключения с помощью функции connectionString().
Обратите внимание, что номера телефонов должны быть указаны в формате международного стандарта E.164 (например, +14255550123). Номер телефона в поле From также может быть представлен в виде краткого кода (например, 23456).
Обратите внимание, что номера телефонов должны быть указаны в формате международного стандарта E.164 (например, +14255550123). Номер телефона в поле From также может быть представлен в виде краткого кода (например, 23456).
Для применения тега к отчету о доставке используется метод setTag .
Выполнение кода
Перейдите в каталог, содержащий файл pom.xml, и скомпилируйте проект с помощью команды mvn .
Затем выполните сборку пакета.
Выполните следующую команду mvn для запуска приложения.
Устранение неполадок
Очистка ресурсов
Если вы хотите очистить и удалить подписку на Службы коммуникации, вы можете удалить ресурс или группу ресурсов. При этом удаляются все ресурсы, связанные с ней. См. сведения об очистке ресурсов.
Дальнейшие действия
SMSAero API Node.js
Все методы возвращают promise, поэтому используйте .then/catch или async/await.
Принимаемые методами параметры почти везде совпадают с документацией, поэтому за детальным разъяснением какой метод за что отвечает - обращайтесь к ней.
Обязательными являются один из параметров: number или numbers .
Тип: string
Обязательно: да
Тип: array
Обязательно: да
Тип: string
Обязательно: нет
Тип: string
Обязательно: нет
Тип: string
Обязательно: нет
Тип: number
Обязательно: нет
Формат: unixtime
Тип: string
Обязательно: нет
Проверить статус отправленной sms.
Тип: number
Обязательно: да
Получить список отправленных SMS.
Тип: string
Обязательно: нет
Тип: string
Обязательно: нет
Тип: number
Обязательно: нет
Получить информацию о состоянии баланса в системе.
Получить информацию о тарифах.
Добавить новую подпись. Подпись может содержать до 11 латинских символов, цифр и знаков.
Тип: string
Обязательно: да
Получить список доступных подписей. На вход может принимать параметр page , если не передать, по умолчанию это 1 страница.
Добавить новую группу.
Тип: string
Обязательно: да
Тип: number
Обязательно: да
Получить список групп. На вход может принимать параметр page , если не передать, по умолчанию это 1 страница.
Тип: string
Обязательно: нет
Добавить контакт. Обязательный параметр только number . Параметр sex может иметь значения только male или female , или библиотека выкинет ошибку.
Тип: string
Обязательно: да
Тип: number
Обязательно: нет
Тип: number
Обязательно: нет
Формат: unixtime
Тип: string
Возможные значения: male , female
Тип: string
Обязательно: нет
Тип: string
Обязательно: нет
Тип: string
Обязательно: нет
Тип: string
Обязательно: нет
Тип: string
Обязательно: нет
Тип: string
Обязательно: нет
Тип: number
Обязательно: да
Получить список контактов. Обязательных параметров нет.
Тип: string
Обязательно: да
Тип: number
Обязательно: нет
Тип: number
Обязательно: нет
Формат: unixtime
Тип: string
Возможные значения: male , female
Тип: string
Возможные значения: MEGAFON , MTS , BEELINE , TELE2 , OTHER
Тип: string
Обязательно: нет
Тип: string
Обязательно: нет
Тип: string
Обязательно: нет
Добавить номер в черный список.
Обязательными являются один из параметров: number или numbers . В случае одного номера - можно просто передать его как строку, но так же можно и объектом с ключом numbers и массивом с одним телефоном (см. пример выше).
Тип: string
Обязательно: да
Тип: array
Обязательно: да
Получить номера в черном списке. Обязательных параметров нет. Параметр page по умолчанию равен 1 .
Тип: string
Обязательно: нет
Тип: number
Обязательно: нет
По умолчанию: 1
Создание запроса на проверку HLR. Обязательными являются один из параметров: number или numbers (передаваемый как объект с ключом numbers , см. пример ниже).
Тип: string
Обязательно: да
Тип: array
Обязательно: да
Получение статуса HLR.
Тип: number
Обязательно: да
Определение оператора по номеру телефона. Обязательными являются один из параметров: number или numbers (передаваемый как объект с ключом numbers , см. пример ниже).
Тип: string
Обязательно: да
Тип: array
Обязательно: да
Внимание! У меня не было возможности оттестировать рассылку Viber на реальных данных, поэтому use it on your own risk, если что-то не работает или работает не так - не стесняйтесь сделать pull request с поправкой или создать issue!
Создание Viber-рассылки. Обязательными являются один из параметров: number или numbers (передаваемый как объект с ключом numbers , см. пример ниже), groupId , sign , channel , text .
Читайте также: