-Как добавить свое приложение в Битрикс24
-Как отправлять и принимать смс и сохранить эти данные в Битркс24
Передо мной стояла следующая задача: необходимо было реализовать возможность отправить смс клиенту просьбой оценить оказанную услугу.
Изначально хотели чтоб оценку можно было ставить ответной смс, но позже передумали; клиент переходит по ссылке и там уже ставит свою оценку.
Часть первая. Битркс24 и его iframe приложение.
Часть вторая. Работы на стороне своего сайта.Итак, в битркс24 есть сущности "Задачи", и со страницы задачи нужно реализовать отправку смс клиенту.
Для начала создаем архив с простым приложением. Для чего создаем index.html туда добавляем простенький код (код ниже), создаем архив zip.
Открываем свой облачный Битрикс24, идем на страницу приложений - https://site.bitrix24.ru/marketplace/local/list/ далее нажимаем "добавить приложение".
index.html
-------------
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta http-equiv="X-UA-Compatible" content="ie=edge" /> <title>Bitrix24 app tutorial</title> <!-- подключаем библиотеку BX24 --> <script src="https://api.bitrix24.com/api/v1/"></script> </head> <body> <script> /** * передаем методу `init` в качестве параметра callback-функцию * - наше приложение */ BX24.init(app); function app() { BX24.callMethod('placement.bind', { PLACEMENT: 'TASK_VIEW_TAB', HANDLER: 'https://bx24.site.ru/api/sms/index.php', TITLE: 'sms опрос', DESCRIPTION: 'sms опрос', }, function(res){ }); BX24.resizeWindow(400, 699); BX24.installFinish(); // Отправим запрос на встраивание } </script> </body> </html>
------------
При нажатии кнопки происходит обращение по ссылке HANDLER: 'https://bx24.site.ru/api/sms/index.php', и ответ встраивается в iframe. На стороне сайта приложение имеет вот такую простую структуру.
Ничего лишнего, так сказать.
Файл Index.php состоит из следующего кода:
---------------
<? require_once($_SERVER['DOCUMENT_ROOT'] . "/bitrix/modules/main/include/prolog_before.php"); $act = $_REQUEST['act']; switch($act){ case "send": include '_send.php'; break; default: include '_default.php'; break; } ?>
--------------
Для работы с api bitrix24 использовал вот эту библиотеку https://github.com/zloykolobok/bitrix24
Логика работы: при первом обращении включается файл _default.php . В файле _default.php получаем такие параметры:
$arr = json_decode($_REQUEST['PLACEMENT_OPTIONS'],true);
$taskId = $arr['taskId'];
где $taskId - id задачи в Б24.
Далее работаем с апи битиркс24.
1 Получаем данные задачи по ID ( документация https://dev.1c-bitrix.ru/rest_help/tasks/task/tasks/tasks_task_get.php ).
2 UF_CRM_TASK - в этой переменной хранятся связи задачи с другими обьктами битрикс24. Нас интересует связь с компанией. Получаем ID компании , и получаем данные компании ( https://dev.1c-bitrix.ru/rest_help/crm/company/crm_company_get.php ).
Далее выводим форму с кнопкой отправки.
В файле _send.php получаем номер телефона, подключаем библиотеку Для работы со сервисом отправки смс - sms.ru. Генерируем ссылку, отправляем сообщение на номер. В базе данных заносим эту информацию: дата отправки, номер телефона, статус - отправлен.
Клиенту приходит смс, при переходе открывается сайт, в моем случае ссылка выглядит примерно так: https://bx24.site.ru/vote/?h=4erf4x
Клиент открывает сайт по ссылке, выводим ему простую форму. Структура файлов части где происходит обработка ответа клиента выглядит следующим образом:
Далее по ссылке ищем клиента, и сохраняем его ответ. В моем случае форма выглядит так:
<form method="post"> <center><h3>Оцените по 10-бальной шкале оказанную услугу</h3></center> <input type="hidden" name="act" value="send"> <input type="hidden" name="taskId" value="<?=$taskId?>"> <input type="hidden" name="serviceId" value="<?=$serviceID?>"> <div class="inp-item"> <div class="label">Ваша оценка от 1 до 10:</div> <div> <select name="vote" required> <option value="">Выберите оценку</option> <?for($i=1; $i<=10;$i++):?> <option value="<?=$i?>"><?=$i?></option> <?endfor?> </select> </div> </div> <div class="inp-item"> <label>Комментарий (не обязательно)</label> <textarea name="text" placeholder="Комментарий"></textarea> </div> <button class="btn-success" type="submit">Отправить</button> </form>
Вроде все.
Комментариев нет:
Отправить комментарий