Страница 1 из 2

Проблема с curl -> hash

Добавлено: 13 фев 2018, 13:00
GoG
Доброго времени!

Помогите решить проблему - результаты запроса не верно парсятся:

есть ael в котором есть такие строки

Код: Выделить всё

		Set(API_URL=http://localhost:8080/myapp/app/client/getClientByPhoneNumberAmpersand?phone=${CALLERID(num)});
		Log(NOTICE, CURL API CALL--> ${API_URL} <-- );
		Set(CURLOPT(userpwd)=log:pass);
		Set(CURLOPT(httptimeout)=2);
		Set(CURLOPT(hashcompat)=yes);

		MSet(HASH(infoCBX_API)=${CURL(${API_URL})});
		NoOp(infoCBX_API= ${HASHKEYS(infoCBX_API)});
		NoOp(1.------------------------ ${HASH(infoCBX_API,id)});
		NoOp(2.------------------------ ${HASH(infoCBX_API,phoneManager)});
		NoOp(3.------------------------ ${HASH(infoCBX_API,fioManager)});
		NoOp(4.------------------------ ${HASH(infoCBX_API,companyName)});

		DumpChan(3);

получаю:
Изображение
Изображение

Т.е. вместо пяти пар ключ-значение, полученных через CURL, в HASH попадает одна с неправильным названием ключа.
Подскажите как сделать так, чтоб результат нормально разложился по полочкам.

CURL получает в ответ такую строку:
"id=12828&isCompany=true&companyName=rrr&fioManager=Тишков&phoneManager=203"

Re: Проблема с curl -> hash

Добавлено: 13 фев 2018, 15:27
Repz
Изображение
1) посчитайте количество двойных кавычек в строке.
2) Hash это ключ-значение, вы пытаетесь хеш превратить в массив.
Самое простое решение - обратиться к человеку который это писал.

Re: Проблема с curl -> hash

Добавлено: 13 фев 2018, 17:17
GoG
Спасибо за ответ.

>>1) посчитайте количество двойных кавычек в строке.
Вы правильно заметили что в результате неверное количество кавычек и наверняка именно в этом проблема. Скорее всего, суть моего вопроса сводится к тому- откуда они взялись т.к. в HTTP ответе все нормально:
- "id=12828&isCompany=true&companyName=rrr&fioManager=Тишков&phoneManager=203"
Кавычки там где надо но, по какой-то причине в хеш попадает кавычка которая туда попасть не должна.

>>2) Hash это ключ-значение, вы пытаетесь хеш превратить в массив.
"Hash это ключ-значение" так и есть и именно поэтому используется опция Set(CURLOPT(hashcompat)=yes); которая призвана распарсить результат в пары ключ-значение.

>>Самое простое решение - обратиться к человеку который это писал.
Писал это я. За основу была взята статья https://habrahabr.ru/sandbox/100053/

Re: Проблема с curl -> hash

Добавлено: 13 фев 2018, 17:56
ded
GoG писал(а):За основу была взята статья https://habrahabr.ru/sandbox/100053/
Оч. поднимает настроение, вступление -
В данной статье я хочу рассказать о том, как с помощью ael (Asterisk Extension Language) упростить свою жизнь.
Я бы перефразировал примерно так:
В данной статье я хочу рассказать о том, как продать свою почку, получить кучу денег, и с помощью списанного аппарата гемодиализа и двух батареек "Крона" упростить свою жизнь. Зачем нам две почки? Это же не глаза?

Re: Проблема с curl -> hash

Добавлено: 13 фев 2018, 18:45
GoG
Возможно Вы сможете подсказать более лаконичный способ получить требуемую информацию по HTTP для дальнейшего использования?

Re: Проблема с curl -> hash

Добавлено: 13 фев 2018, 20:58
ded
Да, чуть по другому: AGI скрипт на PHP.
Через вэб POST/GET запросы мне думается можно отдавать данные при звонке, и принимать данные, чтобы инициировать звонок.
Дебажить 100% гораздо удобней!
CLI> agi set debug on
и всё видим на человеческом языке. AEL - нечеловеческий, создан, как известно, рептилоидами, которые захватили Землю, и нас хотят поработить.

P.S. А зачем Вам PJSIP? Хотите закалить волю к победе? Тогда лучше начинать с обливаний холодной водой и на морозе.

Re: Проблема с curl -> hash

Добавлено: 14 фев 2018, 02:34
whoim
Также есть shell(), wget и cut(). Ну, если аги вдруг не нравится.

Re: Проблема с curl -> hash

Добавлено: 14 фев 2018, 13:31
GoG
Большое спасибо за ответы и советы!

Пока я не нашел ответ на свой вопрос придется воспользоваться одним из них, хотя, при всем уважении, не могу согласиться с тем что они более лаконичны. Как минимум по количеству строк и удобочитаемости этих строк.
ded писал(а):Да, чуть по другому: AGI скрипт на PHP.
Спасибо. Мне придется перебороть свою фобию к PHP и освоить этот метод. К сожалению я пока "не умею это готовить" и мне показалось что AEL и приложения диалплана будут достаточны для того чтоб решить мою задачу и получить код, который можно читать без боли.
ded писал(а):AEL - нечеловеческий, создан, как известно, рептилоидами, которые захватили Землю, и нас хотят поработить.
Я не знал этого. В тайне думал так про идейных отцов диалплана. Это незнание существенно облегчило мне жизнь. Писать на AEL мне удобно. Возможно у меня не достаточно опыта для сравнения.
ded писал(а):P.S. А зачем Вам PJSIP? Хотите закалить волю к победе? Тогда лучше начинать с обливаний холодной водой и на морозе.
Опять-же от незнания. Пока я не столкнулся с какими-то проблемами (тфу-тфу) и моя текущая задача решается. Выбор был прост - новая и более совершенная технология значит лучше. В следующий раз я учту ваш опыт. Надеюсь с этим проектом мне не придется сокрушаться по поводу того что я не знал что PJSIP потенциально может добавить проблем.
Не сочтите за нахальство попросить у Вас ссылки на информацию о том какие именно проблемы меня ожидают при использовании PJSIP.

И таки да (да простят меня читающие за флуд) я стараюсь хотя-бы раз в неделю купаться в проруби, езжу зимой на велосипеде и применяю еще несколько способов выйти из зоны комфорта. Но, я не стараюсь придумать себе проблем!
whoim писал(а):Также есть shell(), wget и cut(). Ну, если аги вдруг не нравится.
Спасибо. Вынужден воспользоваться этими инструментами.

К сожалению, пока, вопрос "почему это не работает?" остается открытым.

Re: Проблема с curl -> hash

Добавлено: 14 фев 2018, 15:42
ded
GoG писал(а):Мне придется перебороть свою фобию к PHP и освоить этот метод
Можно AGI на perl, python, bash, etc.
GoG писал(а):Не сочтите за нахальство попросить у Вас ссылки на информацию о том какие именно проблемы меня ожидают при использовании PJSIP.
Google => PJSIP+проблемы (мнения в русскоязычной части интернет)
Google => PJSIP+troubles (мнения в анголоязычной части).
GoG писал(а):я стараюсь хотя-бы раз в неделю купаться в проруби, езжу зимой на велосипеде и применяю еще несколько способов выйти из зоны комфорта.
Ну тогда я за вас спокоен. Сам я - только раз в году, в январе. Но может у меня ещё всё впереди?

Re: Проблема с curl -> hash

Добавлено: 15 фев 2018, 08:06
virus_net
Если по уму подходить к задаче, то другого пути как AGI просто нет. Читаемого диалплана с нормальным обработчиком ошибок не сделать.
Но почему-то, в последнее время, обрабатывать возможные ошибки, которые неизбежно будут, как-то таймаут, 404, 403, и т.п., никого не интересует. :shock: