Разработчикам — Подробнее о Viber-API
Осуществление отправки Viber сообщений через официальный канал благодаря протоколу API дает возможность отправлять сообщение длинной 1 000 символов с иллюстрированной картинкой и кнопкой на веб сайт(портал)

Отправка сообщений на Viber

Чтобы начать работу с нашим сервисом по HTTP API, сделайте следующее:

  1. Пополните ваш баланс, если он на нуле;
  2. Создайте новый API-ключ. Вы можете иметь до 5 ключей, создавая и удаляя их по вашему усмотрению в любое время;
  3. Укажите IP (один, несколько, или диапазон), с которого будут приходить сообщения.
Адрес HTTP API:

http://api.sms.intel-tele.com/im/send/

Параметры:
Параметр Описание Обязательный
username Да
api_key Да
to номер телефона получателя, в международном формате, без «+». Mожно указать несколько номеров, разделенных запятой («,»), им придут одинаковые сообщения Да
im_sender имя отправителя. Если параметр не указан, имя отправителя по умолчанию будет «IntelTele.com» Нет
im_message текст сообщения, utf-8 url-encoded. Длинный текст до 1000 символов Да
im_image ссылка на изображение, utf-8 url-encoded. Размер картинки не должен превышать 400x400px. Формат: JPG/JPEG/PNG Нет
im_button_text текст кнопки, utf-8 url-encoded. Используется в паре с im_button_link Нет
im_button_link ссылка для перехода, при нажатии на im_button_text, utf-8 url-encoded Нет
im_ttl время жизни сообщения (Количество секунд). Min — 15. Max — 86400. По умолчанию — 15 Нет

Если номер не имеет учетной записи Viber, вы можете использовать возможность отправить свое сообщение на этот номер в виде SMS с альтернативным отправителем и текстом сообщения. Для этого вам нужно:

  1. sms_source — Имя отправителя. Mожет состоять из максимум 11 английских букв и цифр (допускаются также символы «._- «), или из максимум 15 цифр. Используется в паре с sms_message.
  2. sms_message — обязательный, текст сообщения, utf-8 url-encoded. Длинный текст будет разбит на несколько смс (максимум 4 части), цена сообщения возрастёт пропорционально количеству частей.
Пример запроса:

curl «http://api.sms.intel-tele.com/im/send/?username=foo&api_key=bar123&to=7123456789&im_sender=IntelTele.com&im_message=Test+123&im_image=https%3A%2F%2Fintel-tele.com%2Fimages%2Flogo.png&im_button_text=Click&im_button_link=https%3A%2F%2Fintel-tele.com&im_ttl=120»

Пример ответа:

{«reply»: [{«status»: «OK», «cost»: «0.200000», «country»: «ru», «mcc»: «250», «number»: «7123456789», «message_id»: «3c32257b-e0b8-4be9-b0e6-e871116b4bdf»}]}

Ответ сервера (JSON) (Ошибки):

Значения полей по всему запросу:
{'reply':[{'status': 'error: wrong username/api_key'}]} ошибка авторизации (введен неправильный логин или API Key)
{'reply':[{'status': 'error: wrong api key'}]} API-ключ не подходит
{'reply':[{'status': 'error: bruteforcing detected'}]} было обнаружено слишком много неавторизованных запросов, данный IP будет заблокирован на 5 минут
{'reply':[{'status': 'error: ip not allowed'}]} попытка отправки с незарегистрированного IP
{'reply':[{'status': "error: can't send message"}]} отсутствуют параметры «message» или «to», отправка невозможна
{'reply': [{'status': 'error: message is too long'}]} длина сообщения превышает разрешенное кол-во символов (1000)
{'reply':[{'status': "error: sender is banned"}]} имя отправителя заблокировано как спам. За разъяснениями обратитесь в техническую поддержку
{'reply':[{'status': 'error: wrong sender'}]}  параметр «from» отправитель не найден
Значения полей по каждому номеру в запросе:
{"reply": [{"number": "7123456789", "status": "error: number is blacklisted"}]} номер телефона получателя был внесён в чёрный список. За разъяснениями обратитесь в техническую поддержку
{"reply": [{'number': '7123456789', 'status': "error: repeat detected"}]} обнаружено и заблокировано повторное сообщение на один и тот же номер в течении 1 минуты
{'reply':[{'number':'7123456789', 'status':"error: can't determine country"}]} невозможно определить страну
{'reply':[{'number':'7123456789', 'status':"error: no route to country"}]} данная страна не прописана в таблице роутинга на вашем аккаунте, следует обратиться к менеджеру
{'reply':[{'number':'7123456789', 'status':"error: low balance", 'cost':'0.04'}]}  недостаточно средств для отправки сообщения
Ответ сервера при успешной постановке сообщения в очередь:
{"reply": [{"status": "OK", "cost": "0.186440", "country": "ru", "mcc": "250", "number": "7123456789", "message_id": "3c32257b-e0b8-4be9-b0e6-e871116b4bdf"}]}  смс была успешно отправлена!
Значения полей:
status  статус отправки, «OK» означает, что сообщение было корректно обработано и поставлено в очередь на отправку внешнему смс-провайдеру
cost  стоимость смс в на данный номер
number  номер, для которого передается статус. если номеров несколько, то для каждого будет свой хэш «{}» внутри списка «reply»
message_id  id сообщения, присвоенный системой. будет передаваться в асинхронных вызовах обработчика статусов
country  двухбуквенный код страны, см Список кодов по ISO 3166
mcc  код страны, см. Mobile Country Code

Асинхронная передача статуса сообщений

При необходимости, система может совершать GET или POST запросы на некий URL, записанный в вашем профиле. В запросах будут передаваться статусы сообщений, по мере их доставки абонентам.

Наш запрос передает следующие параметры:

msgid ID, которое наша система присвоила сообщению при отправке. Например, f3e76f4e-d4e3-424b-b26b-c0ebc72892cd
status статус доставки. Может иметь значения:

  • delivrd — сообщение доставлено.
  • unknown, rejectd, expired, undeliv, deleted — сообщение не доставлено.
datetime  время прибытия статуса в систему от внешнего смс-центра, в часовом поясе UTC

Синхронная проверка статуса сообщения

URL (GET или POST запрос):

http://api.sms.intel-tele.com/im/status/

Параметры:
Параметр Описание Обязательный
username Да
api_key Да
timeformat  опциональный, urlencoded. Задаёт форматирование для даты. [datetime, date, time]. Если параметр не задан, дата не передаётся в ответе сервера.
Например, timeformat=datetime выдаст дату в виде 2017-01-23 12:34:56
Нет
timezone  опциональный, urlencoded. Задаёт часовой пояс даты, см список часовых поясов. Если параметр не задан, то будет использован часовой пояс из вашего профиля. Нет
Пример запроса:

curl «http://api.sms.intel-tele.com/im/status/?username=foo&api_key=bar&requests=3c32257b-e0b8-4be9-b0e6-e871116b4bdf&timezone=UTC&timeformat=datetime»

Пример ответа:

{«3c32257b-e0b8-4be9-b0e6-e871116b4bdf»: {«date»: «17-02-2013 12:08:29», «status»: «rejectd», «time_zone»: «UTC»}}

Проверка баланса

URL (GET или POST запрос):

http://api.sms.intel-tele.com/balance/

Параметры:
Параметр Описание Обязательный
username Да
api_key Да
Пример запроса:

curl «http://api.sms.intel-tele.com/balance/?username=foo&api_key=bar»

Пример ответа:

{«balance»: «-0.42»}

Проверка кредита

URL (GET или POST запрос):

http://api.sms.intel-tele.com/credit/

Параметры:
Параметр Описание Обязательный
username Да
api_key Да
Пример запроса:

curl «http://api.sms.intel-tele.com/credit/?username=foo&api_key=bar»

Пример ответа:

{«credit»: «1.23»}

Запрос Тарифов
URL (GET или POST запрос):

http://api.sms.intel-tele.com/rates/

Параметры:
Параметр Описание Обязательный
username Да
api_key Да
Пример запроса:

curl «http://api.sms.intel-tele.com/rates/?username=foo&api_key=bar»

Ответ сервера (JSON):
Значения полей по всему запросу:
Поле Описание
{'message': 'Invalid auth', 'error': true}  ошибка авторизации (введен неправильный логин или API Key)
{'status': 'bruteforcing detected', 'error': true}  было обнаружено слишком много неавторизованных запросов, данный IP будет заблокирован на 5 минут
{'status': 'ip not allowed', 'error': true}  попытка отправки с незарегистрированного IP
Ответ сервера при успешном запросе:

{«user»: {«ru»: {«01»: [0.123456, 0], «»: [0.234567, 0]}}}

Значения полей:
Поле Описание
user
ru  двухбуквенный ISO код страны
"01": [0.123456,0], MNC оператора:
1-й параметр: стоимость за 1 смс
2-й параметр: 0 — плата снимается за все смс, 1 — плата снимается только за доставленные
* если ключ пустой — все операторы