В этой статье описан процесс получения данных из ответа от сервера. Ответом от сервера всегда являются данные в формате JSON.
Как создавать запросы к серверу для тестирования описано в этой статье.
Вот мы получили JSON файл следующего вида.
{
"ok": true,
"result": {
"user": {
"id": 426232239,
"is_bot": false,
"first_name": "Ярослав",
"last_name": "Ярославович",
"username": "yaryarich",
"language_code": "ru"
},
"status": "creator",
"is_anonymous": false
}
}
Составление адреса
Предположим, нам требуется подтянуть имя. Чтобы обратиться к этой информации, требуется прописать полный адрес до нее. Таким адресом будет result.result.user.first_name.
Разберем этот адрес по структуре, чтобы понять, как он строится:
- Для получения любой информации из JSON файла первым делом всегда пишется result, таким образом объявляется тело ответа. Адрес на этом этапе: «result».
- Элементы адреса разделяются между собой точками. Адрес на этом этапе: «result.».
- Обращаемся к списку с именем result. Адрес на этом этапе: «result.result».
- Обращаемся к списку с именем user. Адрес на этом этапе: «result.result.user».
- Указываем поле, которое содержит интересующую нас информацию, сейчас таким полем является first_name. Оно содержит в себе значение: Ярослав. «result.result.user.first_name».
Использование адреса в сценарии
Попробуем получить значение переменной first_name из примера выше уже в сценарии. Для этого создадим запрос к серверу и подтянем оттуда искомый JSON.
Для сохранения нужных данных в переменную указываем полный адрес в JSON к искомым данным.
Нюансы
Переменные со значение True или False
В связи с особенностями языка программирования, нет возможности успешно подтянуть значение переменных, которое равно true или false. При попытке подтянуть true, значение будет преобразовано в 1 и все отработает исправно, но если попробовать подтянуть false, то бот сломается, так как преобразует false в "", где "" – отсутствие символов.
Индексация в массивах начинается с 0, поэтому если в массиве 3 элемента, но индексироваться они будут следующим образом: 0, 1, 2.
{
"name": "02.02 тестирование",
"botId": "44e62ac6-6c08-4ad1-923d-5ee3299dd737",
"dialplanId": "d71c9c44-e942-4c6c-9ccc-ea5a043efb75",
"backgroundNoise": "/background/office.wav",
"amd": {
"enabled": true,
"mode": "BACK",
"file": null
},
"defaultCallerId": {
"type": "Custom ",
"data": "79996662211",
"additional": null
},
"defaultRedirect": {
"type": "hangup",
"data": null,
"additional": null
},
"scheduledAt": null,
"intensity": 1,
"webhookUrl": "https://webhook.site/12345678",
"allowedTimeRange": {
"from": 32500,
"to": 79000
},
"phoneNormalization": "ru",
"detectGenderByVoice": true,
"isTest": false,
"recallRules": {
"BUSY": {
"enabled": true,
"tries": 3,
"interval": 900
},
"NO_ANSWER": {
"enabled": true,
"tries": 3,
"interval": 1800
},
"MACHINE": {
"enabled": true,
"tries": 2,
"interval": 1800
},
"CONGESTION": {
"enabled": true,
"tries": 3,
"interval": 900
},
"NOT_SUCCESSFUL": {
"enabled": false,
"tries": null,
"interval": null,
"duration": 0
}
}
}
{
"calls": [
{
"phone": "79996662211",
"externalId": "",
"additionalData": "",
"variables": {
"firstName": "Никита",
"lastName": "Сергеев",
"age": "33"
}
},
{
"phone": "79996662233",
"externalId": "",
"additionalData": "",
"variables": {
"firstName": "Иван",
"lastName": "Иванов",
"age": "26"
}
}
]
}





