VIDEOCHAT  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

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

Проблемы Asterisk без вэб-оболочек и их решения

Модераторы: april22, Zavr2008

GoG
Сообщения: 12
Зарегистрирован: 07 фев 2017, 16:59
Откуда: Киев

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

Сообщение 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"
Вложения
2018-02-13_11-47.jpg
2018-02-13_11-47.jpg (11.81 КБ) 7656 просмотров
2018-02-13_11-46.jpg
Repz
Сообщения: 169
Зарегистрирован: 04 мар 2015, 11:35

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

Сообщение Repz »

Изображение
1) посчитайте количество двойных кавычек в строке.
2) Hash это ключ-значение, вы пытаетесь хеш превратить в массив.
Самое простое решение - обратиться к человеку который это писал.
GoG
Сообщения: 12
Зарегистрирован: 07 фев 2017, 16:59
Откуда: Киев

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

Сообщение GoG »

Спасибо за ответ.

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

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

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

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

Сообщение ded »

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

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

Сообщение GoG »

Возможно Вы сможете подсказать более лаконичный способ получить требуемую информацию по HTTP для дальнейшего использования?
ded
Сообщения: 15619
Зарегистрирован: 26 авг 2010, 19:00

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

Сообщение ded »

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

P.S. А зачем Вам PJSIP? Хотите закалить волю к победе? Тогда лучше начинать с обливаний холодной водой и на морозе.
whoim
Сообщения: 766
Зарегистрирован: 26 ноя 2013, 23:25
Откуда: Краснодар
Контактная информация:

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

Сообщение whoim »

Также есть shell(), wget и cut(). Ну, если аги вдруг не нравится.
облачные и локальные сервера asterisk/freepbx/a2billing/crm с полной техподдержкой. skype: whoim2, sipuri: whoim@asterisk.ru
GoG
Сообщения: 12
Зарегистрирован: 07 фев 2017, 16:59
Откуда: Киев

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

Сообщение GoG »

Большое спасибо за ответы и советы!

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

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

К сожалению, пока, вопрос "почему это не работает?" остается открытым.
ded
Сообщения: 15619
Зарегистрирован: 26 авг 2010, 19:00

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

Сообщение ded »

GoG писал(а):Мне придется перебороть свою фобию к PHP и освоить этот метод
Можно AGI на perl, python, bash, etc.
GoG писал(а):Не сочтите за нахальство попросить у Вас ссылки на информацию о том какие именно проблемы меня ожидают при использовании PJSIP.
Google => PJSIP+проблемы (мнения в русскоязычной части интернет)
Google => PJSIP+troubles (мнения в анголоязычной части).
GoG писал(а):я стараюсь хотя-бы раз в неделю купаться в проруби, езжу зимой на велосипеде и применяю еще несколько способов выйти из зоны комфорта.
Ну тогда я за вас спокоен. Сам я - только раз в году, в январе. Но может у меня ещё всё впереди?
virus_net
Сообщения: 2337
Зарегистрирован: 05 июн 2013, 08:12
Откуда: Москва

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

Сообщение virus_net »

Если по уму подходить к задаче, то другого пути как AGI просто нет. Читаемого диалплана с нормальным обработчиком ошибок не сделать.
Но почему-то, в последнее время, обрабатывать возможные ошибки, которые неизбежно будут, как-то таймаут, 404, 403, и т.п., никого не интересует. :shock:
мой SIP URI sip:virus_net@asterisk.ru
bitname.ru - Домены .bit (namecoin) .emc .coin .lib .bazar (emercoin)

ENUMER - звони бесплатно и напрямую.
Ответить
© 2008 — 2024 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH