Розробникам – Детальніше про 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 – Ім’я відправника. Може складатися з максимум 11 англійських букв і цифр (дозволяються також символи «._-«), або з максимум 15 цифр. Використовується в парі з sms_message.
  2. sms_message – обов’язковий, текст повідомлення, utf-8 url-encoded. Довгий текст буде розбитий на кілька смс (максимум 7 частин), ціна повідомлення зросте пропорційно кількості частин.
Приклад запиту:

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 “Cтатус доставки. Може мати значення:

  • 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 – плата здіймається тільки за доставлені
* якщо ключ порожній – всі оператори