ВидеоКонф(ВКС)  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

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

Проблемы и их решения Asterisk как такового

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

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

Сообщение GoG » 13 фев 2018, 14:00

Доброго времени!

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

есть 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 KIB) Просмотров: 6951
2018-02-13_11-46.jpg
GoG
 
Сообщений: 12
Зарегистрирован: 07 фев 2017, 17:59
Откуда: Киев

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

Сообщение Repz » 13 фев 2018, 16:27

Изображение
1) посчитайте количество двойных кавычек в строке.
2) Hash это ключ-значение, вы пытаетесь хеш превратить в массив.
Самое простое решение - обратиться к человеку который это писал.
Repz
 
Сообщений: 169
Зарегистрирован: 04 мар 2015, 12:35

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

Сообщение GoG » 13 фев 2018, 18:17

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

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

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

>>Самое простое решение - обратиться к человеку который это писал.
Писал это я. За основу была взята статья https://habrahabr.ru/sandbox/100053/
GoG
 
Сообщений: 12
Зарегистрирован: 07 фев 2017, 17:59
Откуда: Киев

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

Сообщение ded » 13 фев 2018, 18:56

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

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

Сообщение GoG » 13 фев 2018, 19:45

Возможно Вы сможете подсказать более лаконичный способ получить требуемую информацию по HTTP для дальнейшего использования?
GoG
 
Сообщений: 12
Зарегистрирован: 07 фев 2017, 17:59
Откуда: Киев

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

Сообщение ded » 13 фев 2018, 21:58

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

P.S. А зачем Вам PJSIP? Хотите закалить волю к победе? Тогда лучше начинать с обливаний холодной водой и на морозе.
ded
 
Сообщений: 15803
Зарегистрирован: 26 авг 2010, 19:00

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

Сообщение whoim » 14 фев 2018, 03:34

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

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

Сообщение GoG » 14 фев 2018, 14:31

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

Пока я не нашел ответ на свой вопрос придется воспользоваться одним из них, хотя, при всем уважении, не могу согласиться с тем что они более лаконичны. Как минимум по количеству строк и удобочитаемости этих строк.

ded писал(а):Да, чуть по другому: AGI скрипт на PHP.

Спасибо. Мне придется перебороть свою фобию к PHP и освоить этот метод. К сожалению я пока "не умею это готовить" и мне показалось что AEL и приложения диалплана будут достаточны для того чтоб решить мою задачу и получить код, который можно читать без боли.
ded писал(а):AEL - нечеловеческий, создан, как известно, рептилоидами, которые захватили Землю, и нас хотят поработить.

Я не знал этого. В тайне думал так про идейных отцов диалплана. Это незнание существенно облегчило мне жизнь. Писать на AEL мне удобно. Возможно у меня не достаточно опыта для сравнения.

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

Опять-же от незнания. Пока я не столкнулся с какими-то проблемами (тфу-тфу) и моя текущая задача решается. Выбор был прост - новая и более совершенная технология значит лучше. В следующий раз я учту ваш опыт. Надеюсь с этим проектом мне не придется сокрушаться по поводу того что я не знал что PJSIP потенциально может добавить проблем.
Не сочтите за нахальство попросить у Вас ссылки на информацию о том какие именно проблемы меня ожидают при использовании PJSIP.

И таки да (да простят меня читающие за флуд) я стараюсь хотя-бы раз в неделю купаться в проруби, езжу зимой на велосипеде и применяю еще несколько способов выйти из зоны комфорта. Но, я не стараюсь придумать себе проблем!

whoim писал(а):Также есть shell(), wget и cut(). Ну, если аги вдруг не нравится.

Спасибо. Вынужден воспользоваться этими инструментами.

К сожалению, пока, вопрос "почему это не работает?" остается открытым.
GoG
 
Сообщений: 12
Зарегистрирован: 07 фев 2017, 17:59
Откуда: Киев

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

Сообщение ded » 14 фев 2018, 16:42

GoG писал(а):Мне придется перебороть свою фобию к PHP и освоить этот метод
Можно AGI на perl, python, bash, etc.
GoG писал(а):Не сочтите за нахальство попросить у Вас ссылки на информацию о том какие именно проблемы меня ожидают при использовании PJSIP.

Google => PJSIP+проблемы (мнения в русскоязычной части интернет)
Google => PJSIP+troubles (мнения в анголоязычной части).
GoG писал(а):я стараюсь хотя-бы раз в неделю купаться в проруби, езжу зимой на велосипеде и применяю еще несколько способов выйти из зоны комфорта.
Ну тогда я за вас спокоен. Сам я - только раз в году, в январе. Но может у меня ещё всё впереди?
ded
 
Сообщений: 15803
Зарегистрирован: 26 авг 2010, 19:00

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

Сообщение virus_net » 15 фев 2018, 09:06

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

ENUMER - звони бесплатно и напрямую.
virus_net
 
Сообщений: 2337
Зарегистрирован: 05 июн 2013, 08:12
Откуда: Москва

След.

Вернуться в Конфигурация и настройка Asterisk

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 25

© 2008 — 2024 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH