Използване на REST API Bitrix24
Съдържание
Обща процедура за работа с OAuth при създаване на приложения за Bitrix24
- Регистрирайте приложението си в Bitrix24 Marketplace
- Изискване на ключове от отдалечен сървър
- Сървърът пренасочва браузъра към URL адреса, регистриран от приложението
- Отговорът се обработва
- Всички заявки към Rest API се подписват с получения ключ.
Регистрация на приложение в Bitrix24 Marketplace
От 25 май 2015г Вече не е необходимо да ставате технологичен партньор, за да добавите вашите приложения към портала.
Ако имате администраторски права на портала си, отидете в секцията Приложения - Добавяне на приложение. Изберете за лична употреба (в този случай никой освен вас и вашия портал няма да може да използва това приложение)

Ще се отвори форма за добавяне на приложение.

Попълнете формуляра:
- Името на приложението е произволно.
- Приложението използва само API - задължително
- Права за достъп - посочете до кои секции ще има достъп това приложение
- Посочете връзка - посочете вашия произволен сайт (или произволна страница).
След това щракнете върху „Запазване“


Приложението за настолен компютър трябва да слуша на някакъв порт на localhost (Oktell обикновено слуша на порт 4055).
След получаване на тези данни браузърът вече не е необходим. Данните, получени в резултат на създаването на приложението, и полученият код трябва да бъдат въведени в таблицата oktell.dbo.bitrix_oauth в съответните полета. Скриптът за създаване на таблицата е даден в края на статията.

В отговор сървърът ще върне json структура с всички данни, необходими за отправяне на заявки към сървъра.
Всичко, което приложението може да направизаявки към услугата REST.
4) При достигане на at lifetime е необходимо да изпратите заявка за нов at на следната форма:
В резултат на тази заявка ще бъде върната json структура на формуляра:
access_token, който се съхранява в базата данни, се актуализира на всеки час, за да може непрекъснато да изпълнява всякакви заявки към Bitrix24.
Примерен скрипт, който изпраща заявка за получаване на access_token след получаване на код и актуализира access_token със съществуващ refresh_token:

Пример за REST API
Помислете за пример за получаване на списък с всички потенциални клиенти. За да направим това, имаме нужда от 2 метода:
Сценарий "bitrix_crm_lead_list"

0) Показваме известие за стартирането на скрипта и получаваме текущата дата и час, за да покажем времето за изпълнение на скрипта. Получаваме датата и часа от функцията "Текущи дата и час". 1) В този сценарий, както във всеки друг, е удобно да се използва съществуващият, автоматично актуализиран access_token, който получихме в предишната глава. Получаваме данни от таблицата oktell.dbo.bitrix_oauth, за да изпълним REST заявка. Текстът на заявката, която се изпълнява -
2) Задайте брояча за получаване на списъка с потенциални клиенти = 0 и брояча на последната итерация = 0 и брояча на повторенията за получаване на потенциални клиенти = 0

3) Получаваме първите N извода, във втората итерация следата от N извода, числото N се получава след изпълнението на 1-вата заявка и при всяка следваща, също след първата заявка получаваме колко извода са общо. В примера: 'https://'+[domain]+'/rest/crm.lead.list?start='+[counter_lead_start]+'&auth='+[access_token]

4) Вземете общо колко потенциални клиенти. Използва се компонента Parser с алгоритъм "JSON Parser". В примера: заявката за търсене еобщо

важно! Всички компоненти на анализатора в този сценарий използват алгоритъма "JSON анализатор".
5) Записваме началния номер за следващата итерация в брояча на разписките за потенциални клиенти. В примера: заявка за търсене -следващ
5.1) Ако анализаторът на JSON е неуспешен, което означава, че няма брояч за следващата итерация, който показва последната итерация, тогава ние допълнително определяме брояча на последната итерация и задаваме брояча на получаване на потенциални клиенти за последната итерация = колко общо потенциални клиенти (общо)

6) Настройте брояча да получава N-то извеждане от анализатора (по правило броячът ще работи от 0 до 49).
7) Вземете N-то извеждане за по-нататъшен анализ (JSON Parser). В примера: израз на заявка за търсене - '"result"/'+[counter_lead_parse]

важно! Компонентите на анализатора винаги трябва да имат преходи, присвоени на клона „Грешка“, тъй като ако в това поле няма данни, анализаторът ще работи точно върху този преход, а ако не е посочен, тогава скриптът ще приключи.
8) Актуализирайте лийд в таблицата - [oktell].[dbo].[bitrix_leads] ако е там и го добавете ако не, дефиницията се прави от sql_ID (по номер на лийд). Текстът на заявката, която се изпълнява -
8.1) Ако sql заявката за добавяне/актуализация на лийд е била изпълнена с грешка, тогава запишете информацията за грешката в таблицата [oktell].[dbo].[bitrix_import_lead_error]
Текстът на заявката, която се изпълнява -
9) Увеличете брояча, за да получите N-та преднина с 1 (+1)

10) След това се прави проверка N-тият брой получени потенциални клиенти по-малък ли е от броя получени потенциални клиенти в уеб заявката? Текстът на израза е [Брояч на итерации за получаване на списъка с потенциални клиенти]*50+num([counter_lead_parse]) В израза използваме коефициента под формата на брояч на итерации за получаване насписъка с потенциални клиенти, за да преминете правилно през всички потенциални клиенти, получени в резултат на уеб заявка. Например по време на първата итерация ще преминем през 0*50+[0..49] потенциални точки, а по време на втората итерация през 1*50+[0..49], т.е. от 50 до 99 отвеждания и т.н.

11) Увеличете брояча на итерации за получаване на списъка с потенциални клиенти +1

12) Проверете брояча на последната итерация=1?

13) Извеждаме известие за завършване на скрипта с времето за изпълнение. Текст на известието - израз -
14) Актуализирайте данните за завършване на скрипта в таблицата oktell.dbo.bitrix_lead_runtime Текстът на изпълняваната заявка -
15) Стартирайте скрипта bitrix_crm_lead_get_by_id, в който ще актуализираме контактите на потенциалните клиенти, при първото стартиране ще бъдат получени всички контакти, при следващите стартирания само контактите на потенциалните клиенти, които са актуализирани след изпълнението на този скрипт.

Сценарий "bitrix_crm_lead_get_by_id"
В този сценарий всяко водещо число ще бъде обработено последователно, защото това може да отнеме доста дълго време, ние ще проверим само онези потенциални клиенти, които са били променени след предишното изпълнение на този скрипт (ако се изпълнява за първи път, ще получим данни за всички потенциални клиенти). Получаваме датата на стартиране от таблицата [oktell]. [dbo].[bitrix_lead_runtime]

0) Показваме известие за изпълнението на скрипта и получаваме текущата дата и час, за да покажем времето за изпълнение на скрипта. Получаваме датата и часа от функцията "Текущи дата и час".
1) Вземете данни от таблицата oktell.dbo.bitrix_oauth, за да изпълните REST заявка Текст на заявката -
- client_id - идентификаторът на приложението, получен по-рано, посочен в тази заявка като низ.
2) Задайте отрицателен брояч за изброяване на потенциални клиентистойност, това е необходимо за получаване на първия потенциален клиент.

3) SQL заявка. Получаване на N-та преднина. Вземете номер на потенциален клиент (ID)

4)sql_result>0? – в резултат на изпълнението на заявката е открит поне един лийд?

5) Изпълнете уеб заявка и получете информация за N-тия лийд чрез предаване на неговия ID

Текстът на заявката е израз на формата - 'https://'+[domain]+'/rest/crm.lead.get?id='+[sql_ID]+'&auth='+[access_token]
6) Получаваме „Избраното решение“ като водещо (по желание можете да премахнете този компонент)
Текстът на заявката е израз на формата - '"result"/"UF_CRM_1387525788"/'+str([i])

7) Добавете избраното от клиента решение към таблицата - oktell.dbo.bitrix_lead_solution (по избор, можете да премахнете този компонент) Текст на заявката -
8) Задайте брояча i = 0, той е необходим, за да можем да получим произволен брой имейли от JSON структурата в следващата верига от стъпки.
9) Изчислете броя на имейлите от водещия клиент. Компонент за анализатор. Текст на заявката - израз на формата - "резултат"/"ИМЕЙЛ"

10) Вземете i-тия имейл и изпълнете поредица от компоненти на JSON Parser, за да получите всеки един. Получаваме структурата на формата:
11) Всеки от тях се добавя към таблицата oktell.dbo.bitrix_lead_contacts Текст на заявката -
12) Увеличете брояча i=i+1
13) Проверете i 13.1) Ако да, преминете към стъпка 10) 13.2) Ако не, преминете към стъпка 14)
17) Всеки от тях се добавя към таблицата oktell.dbo.bitrix_lead_contacts Текст на заявката -
18) Увеличете брояча i=i+1
19) Проверете i 19.1) Ако да, преминете към стъпка 16) 19.2) Ако не, преминете към стъпка 20)
20) Присвоете брояча за изброяване на потенциални клиенти = към текущия идентификатор на потенциален клиент, за търсене ред по ред и отидете на стъпка 3) и така нататък, докатоизпълнява условие 4.2)

Създаване на сервизни задачи
След като всички скриптове са конфигурирани, можете да създадете сервизни задачи, за да автоматизирате процеса на получаване на нови refresh_token, access_token и информация от Bitrix24. Въз основа на описанието на REST API следва, че access_token трябва да се получава на всеки 3600s, докато refresh_token е активен за 1 месец. В този пример е създадена сервизна задача с период на изпълнение веднъж на всеки 50 минути. Това ви позволява винаги да съхранявате валиден access_token, трябва да се има предвид, че след като заявката бъде завършена, refresh_token също се актуализира.
Така бяха създадени 2 сервизни задачи:
Заключение
В резултат на това можем да правим заявки с помощта на REST API и да получаваме и записваме почти всяка информация от облачната версия на Bitrix24. В тази статия беше разгледан пример за получаване на всички потенциални клиенти и запазване на информация в базата данни.
Можем да използваме тези данни:
1) За определяне на номера по време на входящо повикване и показване на уеб формуляр в Call Center веднага с водещата страница.
2) Да се показва името на компанията в различни отчети, като пропуснати повиквания, което ще опрости търсенето и скоростта на вземане на решения за обработка на повиквания.
3) Да използвате тази база данни при различни изходящи обаждания, изпращане на поща до електронна поща.
Дадени са само няколко примера. Приложението може да варира.
Източник
Скрипт за създаване на таблици в база данни OKTELL
/*[bitrix_oauth] – Таблица с Bitrix OAuth данни*/
/*[bitrix_leads] – Таблица, която съдържа цялата информация за потенциални клиенти*/
/* [bitrix_lead_contacts] – Списък с контакти на водещи клиенти*/
/*[bitrix_import_lead_error] – таблица с грешки при изпълнение на sql заявка за добавяне/обновяваневодя*/
/*[bitrix_lead_runtime] – Таблица с данни за началната дата на скриптове за импортиране на потенциални клиенти и скриптове за импортиране на контакти с потенциални клиенти*/
/*[bitrix_lead_solution] – Таблица, съдържаща решенията на клиентите по проекти (разположена най-долу на водещата карта)*/