линия

Главная

пятница, 4 сентября 2020 г.

Bitrix24 - отправка смс из интерфейса CRM

Наконец то собрался мыслями и взяв волю в кулак решил написать статью. Тебе будет интерсено если ты ищешь ответы на следующие вопросы:
 -Как добавить свое приложение в Битрикс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>		
------------


На странице добавления прописываем название , выбираем права доступа - CRM (crm), Задачи (task), Задачи (расширенные права) (tasks_extended); в низу, где "Загрузите архив с вашим приложением (zip)*" выбираем наш созданный архив и сохраняем. Должна появится кнопка как рисунке

 
Часть вторая. Работы на стороне своего сайта.

При нажатии кнопки происходит обращение по ссылке 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>




Вроде все.











































Комментариев нет:

Отправить комментарий