Модули расширения системы > Примеры модулей интеграции с ELMA365 / Интеграция с сервисом отправки SMS

Интеграция с сервисом отправки SMS

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

Также такие модули можно использовать при настройке двухфакторной аутентификации или авторизации в системе по номеру телефона и одноразовым кодам.

Вы можете воспользоваться готовыми модулями интеграции SMSЦентр и SMSRU или создать пользовательский модуль для работы с другим сервисом.

Создание и настройка модуля интеграции

начало внимание

Создавать и настраивать модули могут только пользователи, включённые в группу Администраторы.

конец внимание

Чтобы создать модуль интеграции с сервисом отправки SMS, выполните следующие действия:

  1. Перейдите в Администрирование > Модули.
  2. В правом верхнем углу нажмите кнопку +Модуль и в открывшемся окне выберите опцию Создать.
  3. Введите название и описание модуля и нажмите кнопку Создать.
  4. В настройках модуля перейдите на вкладку Методы API и нажмите кнопку Редактировать. Откроется редактор методов.
  5. Перейдите на вкладку Скрипты и подключите следующие интерфейсы:

// Cтруктура данных для хранения ответа проверки соединения.
interface SMSTestConnectionResult {
    success: boolean;
    failReason: string;
}
 
// Cтруктура данных для хранения ответа отправки СМС на номер.
interface SMSSendError {
    phone: string;
    statusCode?: number;
    statusText?: string;
}

  1. Реализуйте функцию отправки SMS:

async function SMS_SendSMS(phones: string[], msg: string): Promise<SMSSendError[]> {
    // содержимое функции
}

  1. Сохраните и опубликуйте скрипт.

После этого включённый модуль можно использовать для отправки SMS-уведомлений в ходе бизнес-процесса или для авторизации в системе.

Пример интеграции

Рассмотрим подробнее создание модуля на примере интеграции с сервисом SMS Aero. Для интеграции с этим сервисом требуется дополнительно указывать электронную почту, на которую зарегистрирована учётная запись в SMS Aero, а также API-ключ. Эти поля нужно вынести на страницу настройки модуля. Для этого:

  1. Перейдите на страницу Администрирование > Модули. В правом верхнем углу нажмите кнопку +Модуль, а затем Создать. Укажите название модуля и краткое описание.
  2. Откройте вкладку Настройки и создайте два строковых поля, в которых будут храниться настройки для подключения к SMS Aero со стороны модуля:
  • API key — API-ключ для соединения модуля и сервиса SMS Aero;
  • email — электронная почта, на которую зарегистрирована учётная запись в SMS Aero. Используется для авторизации в сервисе.

sms-integration-1

  1. Вернитесь на страницу модуля — на ней появятся добавленные в предыдущем пункте поля:

sms-integration-2

  1. Перейдите в редактор скриптов: Настройки модуля > Методы API > Скрипты и добавьте в файл следующий код:

// Cтруктура данных для хранения ответа проверки соединения.
interface SMSTestConnectionResult {
 success: boolean;
 failReason: string;
}
 
// Cтруктура данных для хранения ответа отправки СМС на номер.
interface SMSSendError {
 phone: string;
 statusCode?: number;
 statusText?: string;
}
 
const api_key = Namespace.params.data.api_key
const email = Namespace.params.data.email
 
// Отправить СМС на номера.
async function SMS_sendSMS(phones: string[], msg: string): Promise<SMSSendError[]> {
 const smsErrs: SMSSendError[] = []
 const authSuccess = await tryAuth()
 
 if (!authSuccess) {
         smsErrs.push({ phone: '', statusCode: 401, statusText: 'Unauthorized' })
         return smsErrs

 
 const phoneListString = phones.join('&numbers[]=')
 
 const res = await fetch(`https://${email}:${api_key}@gate.smsaero.ru/v2/sms/send?numbers[]=${phoneListString}&text=${msg}&sign=SMS Aero`)
 if (!res.ok) {
         // smsErrs позволяет написать отдельную обработку для каждого номера телефона
         smsErrs.push({phone: '', statusCode: res.status, statusText: res.statusText})
         return smsErrs
 }
 return smsErrs
}
 
async function tryAuth(): Promise<boolean> {
 const res = await fetch(`https://${email}:${api_key}@gate.smsaero.ru/v2/auth`)
 if (!res.ok) {
         return false
 }
 return true
}

  1. Сохраните и опубликуйте скрипты.

После включения модуля и заполнения его параметров вы сможете выбрать интеграцию с сервисом SMS Aero при настройке двухфакторной аутентификации, авторизации в системе по номеру телефона и одноразовым кодам или блока Отправить SMS.