JSONPath: различия между версиями
Artem (обсуждение | вклад) Нет описания правки  | 
				Artem (обсуждение | вклад)  Нет описания правки Метка: ручная отмена  | 
				||
| (не показано 56 промежуточных версий 2 участников) | |||
| Строка 2: | Строка 2: | ||
|title=JSONPath  | |title=JSONPath  | ||
|titlemode=append  | |titlemode=append  | ||
|keywords=планфикс, правила, email, почта, задачи, извлечение данных из письма, JSONPath, JSON  | |keywords=планфикс, правила, email, почта, задачи, извлечение данных из письма, JSONPath, JSON, json  | ||
|description=JSONPath  | |description=JSONPath  | ||
}}  | }}  | ||
<div style="background-color:#ffcaca; border: 1px solid #fd9292;padding:10px;">Для отладки и устранения ошибок парсинга используйте специальный онлайн сервис: [https://jsonpath.com/ JSONPath Online Evaluator]</div>  | |||
Приходящие в ПланФикс [[Правило для почты: Извлечение данных | письма по E-mail можно разбирать  | |||
Приходящие в ПланФикс [[Правило для почты: Извлечение данных | письма по E-mail]] или [[Входящие вебхуки |вебхуки]] можно разбирать, используя '''JSON'''. JavaScript Object Notation — это формат для хранения и обмена информацией, доступной для чтения человеком. Есть два основных элемента объекта JSON: ключи и значения.  | |||
Пример:  | Пример:  | ||
| Строка 15: | Строка 17: | ||
ПланФикс умеет разбирать письма в таком формате и добавлять нужные данные в инфоблоки. Для этого используется библиотека [https://github.com/json-path/JsonPath JsonPath].  | ПланФикс умеет разбирать письма в таком формате и добавлять нужные данные в инфоблоки. Для этого используется библиотека [https://github.com/json-path/JsonPath JsonPath].  | ||
Обратите внимание, если при разборе вы используете функцию, необходимо указывать круглые скобки в конце, иначе функция работать не будет:   | |||
https://p.pfx.so/pf/2Q/4xAXkM.png  | |||
==Пример ==  | == Пример № 1 ==  | ||
<div style="background-color:#f9f9f9; border:1px solid #ddd; padding:1em;">  | === Передаём в ПланФикс E-mail с текстом в формате JSON ===  | ||
*Для примера будем использовать такой JSON:  | |||
<div style="background-color:#f9f9f9; border:1px solid #ddd; padding:1em;border-radius:4px;">  | |||
{  | {  | ||
<p style="padding-left:10px;">  | <p style="padding-left:10px;">  | ||
| Строка 27: | Строка 34: | ||
"lastName": "Иванов",  | "lastName": "Иванов",  | ||
</p>  | </p>  | ||
<p>"address": {</p>  | <p style="padding-left:10px;">"address": {</p>  | ||
<p style="padding-left:20px;">  | <p style="padding-left:20px;">  | ||
"streetAddress": "Московское ш., 101, кв.101",<br>  | "streetAddress": "Московское ш., 101, кв.101",<br>  | ||
| Строка 33: | Строка 40: | ||
"postalCode": 101101<br>  | "postalCode": 101101<br>  | ||
</p>  | </p>  | ||
<p> },</p>  | <p style="padding-left:10px;"> },</p>  | ||
<p>"phoneNumbers": [</p>  | <p style="padding-left:10px;">"phoneNumbers": [</p>  | ||
<p style="padding-left:20px;">"812 123-1234",<br>  | <p style="padding-left:20px;">"812 123-1234",<br>  | ||
"916 123-4567"</p>  | "916 123-4567"</p>  | ||
<p>]</p>  | <p style="padding-left:10px;">]</p>  | ||
<p>}</p>  | <p>}</p>  | ||
</div>  | </div>  | ||
*  | |||
*Например, из JSON нам необходимы следующие данные:  | |||
<div style="background-color:#f9f9f9; border:1px solid #ddd; padding:1em;border-radius:4px;">  | |||
{  | |||
<p style="padding-left:10px;">  | |||
"<span style="color:red;">firstName</span>": "Иван",<br>  | |||
"lastName": "Иванов",  | |||
</p>  | |||
<p style="padding-left:10px;">"<span style="color:red;">address</span>": {</p>  | |||
<p style="padding-left:20px;">  | |||
"streetAddress": "Московское ш., 101, кв.101",<br>  | |||
"<span style="color:red;">city</span>": "Ленинград",<br>  | |||
"postalCode": 101101<br>  | |||
</p>  | |||
<p style="padding-left:10px;"> },</p>  | |||
<p style="padding-left:10px;">"<span style="color:red;">phoneNumbers</span>": [</p>  | |||
<p style="padding-left:20px;">"812 123-1234",<br>  | |||
"916 123-4567"</p>  | |||
<p style="padding-left:10px;">]</p>  | |||
<p>}</p>  | |||
</div>  | |||
*Настраиваем такое правило для разбора почты:  | *Настраиваем такое правило для разбора почты:  | ||
https://p.pfx.so/pf/  | https://p.pfx.so/pf/hA/Q5pLjT.png  | ||
*Далее создаём нового клиента по шаблону, указываем какие значения полей из каких инфоблоков устанавливать и добавляем контакт в созданную из письма задачу:  | |||
https://p.pfx.so/pf/SX/tAO0Xf.png  | |||
*В итоге необходимые данные из письма в формате JSON переданы в ПланФикс:  | |||
https://p.pfx.so/pf/wt/Cgieo4.png  | |||
== Пример № 2 ==  | |||
=== Добавляем параметры JSON в аналитику ПланФикса ===  | |||
*Для примера будем использовать JSON заказа товаров в интернет-магазине. Данные, которые нужны для добавления аналитики отмечены красным цветом:  | |||
<div style="background-color:#f9f9f9; border:1px solid #ddd; padding:1em;border-radius:4px;">  | |||
{<br>  | |||
<p style="padding-left:10px;">  | |||
"site": "mysite.shop",<br>  | |||
"name": "Елизавета Бояринцева",<br>  | |||
"id": "6598634",<br>  | |||
"<span style="color:red;">date</span>": "26.04.2021 09:16:05",<br>  | |||
"status": "В работе",<br>  | |||
"email": "liz82@gmail.com",<br>  | |||
"phone": "+7 921 625-30-24",<br>  | |||
"address": "Павла Усова 23, корпус 1",<br>  | |||
"price_total": "13146.00",<br>  | |||
"item_order": [  | |||
</p>  | |||
<p style="padding-left:10px;">{</p>  | |||
<p style="padding-left:20px;">  | |||
"sku": "598623",<br>  | |||
"<span style="color:red;">name</span>": "Скрепки, 28 мм, металлические, 100 шт., в картонной коробке",<br>  | |||
"barcode": "596325689126",<br>  | |||
"<span style="color:red;">price</span>": "14.60",<br>  | |||
"<span style="color:red;">quantity</span>": 10  | |||
</p>  | |||
<p style="padding-left:10px;">  | |||
},<br>  | |||
{  | |||
</p>  | |||
<p style="padding-left:20px;">  | |||
"sku": "589624",<br>  | |||
"name": "Бумага офисная CLASSIC, А4, 80 г/м2, 500 л., марка С",<br>  | |||
"barcode": "5963256858963",<br>  | |||
"price": "250.00",<br>  | |||
"quantity": 25  | |||
</p>  | |||
<p style="padding-left:10px;">  | |||
},<br>  | |||
{  | |||
</p>  | |||
<p style="padding-left:20px;">  | |||
"sku": "579824",<br>  | |||
"name": "Бумага офисная LUX, А4, 80 г/м2, 500 л., марка С",<br>  | |||
"barcode": "5963256889634",<br>  | |||
"price": "270.00",<br>  | |||
"quantity": 25  | |||
</p>  | |||
<p style="padding-left:10px;">  | |||
}<br>  | |||
]</p>  | |||
}<br>  | |||
</div>  | |||
*Настраиваем отдельное правило для задач по почте. Разбираем JSON:  | |||
https://p.pfx.so/pf/Zu/DhWeFP.png  | |||
*Создаем новую задачу и оповещаем нужного сотрудника о её появлении:  | |||
https://p.pfx.so/pf/HK/BXcJXN.png  | |||
*Добавляем в созданную задачу аналитику. Обратите внимание, в этом пункте важно указать параметр '''Добавить столько строк, сколько значений в инфоблоке''', чтобы в аналитику добавились все значения:   | |||
https://p.pfx.so/pf/S9/bQngGo.png  | |||
*В итоге в задаче видим оповещение и аналитику:  | |||
https://p.pfx.so/pf/lD/2VZy47.png  | |||
https://p.pfx.so/pf/0z/4bhocN.png  | |||
== Перейти ==   | |||
*[[Правило для почты: Извлечение данных]]  | |||
*[[Создание и редактирование правил]]  | |||
*[[Входящие вебхуки]]  | |||
Текущая версия от 08:55, 25 марта 2023
Приходящие в ПланФикс  письма по E-mail или вебхуки можно разбирать, используя JSON. JavaScript Object Notation — это формат для хранения и обмена информацией, доступной для чтения человеком. Есть два основных элемента объекта JSON: ключи и значения.
Пример:
{"city":"New York", "country":"United States"}
- ключи — city и country;
 - значения — New York и United States.
 
ПланФикс умеет разбирать письма в таком формате и добавлять нужные данные в инфоблоки. Для этого используется библиотека JsonPath.
Обратите внимание, если при разборе вы используете функцию, необходимо указывать круглые скобки в конце, иначе функция работать не будет:
Пример № 1
Передаём в ПланФикс E-mail с текстом в формате JSON
- Для примера будем использовать такой JSON:
 
{
"firstName": "Иван",
"lastName": "Иванов",
"address": {
"streetAddress": "Московское ш., 101, кв.101",
"city": "Ленинград",
"postalCode": 101101
},
"phoneNumbers": [
"812 123-1234",
"916 123-4567"
]
}
- Например, из JSON нам необходимы следующие данные:
 
{
"firstName": "Иван",
"lastName": "Иванов",
"address": {
"streetAddress": "Московское ш., 101, кв.101",
"city": "Ленинград",
"postalCode": 101101
},
"phoneNumbers": [
"812 123-1234",
"916 123-4567"
]
}
- Настраиваем такое правило для разбора почты:
 
- Далее создаём нового клиента по шаблону, указываем какие значения полей из каких инфоблоков устанавливать и добавляем контакт в созданную из письма задачу:
 
- В итоге необходимые данные из письма в формате JSON переданы в ПланФикс:
 
Пример № 2
Добавляем параметры JSON в аналитику ПланФикса
- Для примера будем использовать JSON заказа товаров в интернет-магазине. Данные, которые нужны для добавления аналитики отмечены красным цветом:
 
{
"site": "mysite.shop",
"name": "Елизавета Бояринцева",
"id": "6598634",
"date": "26.04.2021 09:16:05",
"status": "В работе",
"email": "liz82@gmail.com",
"phone": "+7 921 625-30-24",
"address": "Павла Усова 23, корпус 1",
"price_total": "13146.00",
"item_order": [
{
"sku": "598623",
"name": "Скрепки, 28 мм, металлические, 100 шт., в картонной коробке",
"barcode": "596325689126",
"price": "14.60",
"quantity": 10
},
{
"sku": "589624",
"name": "Бумага офисная CLASSIC, А4, 80 г/м2, 500 л., марка С",
"barcode": "5963256858963",
"price": "250.00",
"quantity": 25
},
{
"sku": "579824",
"name": "Бумага офисная LUX, А4, 80 г/м2, 500 л., марка С",
"barcode": "5963256889634",
"price": "270.00",
"quantity": 25
}
]
}
- Настраиваем отдельное правило для задач по почте. Разбираем JSON:
 
- Создаем новую задачу и оповещаем нужного сотрудника о её появлении:
 
- Добавляем в созданную задачу аналитику. Обратите внимание, в этом пункте важно указать параметр Добавить столько строк, сколько значений в инфоблоке, чтобы в аналитику добавились все значения:
 
- В итоге в задаче видим оповещение и аналитику: