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

Пробел в переменной через AGI

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

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

Ответить
fantomas000
Сообщения: 11
Зарегистрирован: 27 янв 2012, 09:26

Пробел в переменной через AGI

Сообщение fantomas000 »

Здравствуйте!
Кусок диалплана:

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

exten => 1234,1,Answer
same =>       n,AGI(clients.sh,${CALLERID(num)})
same =>       n,NoOp(Result_1: ${res1})
same =>       n,HangUp
clients.sh

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

#!/bin/bash

RESULT1=$(echo "SELECT client FROM test  WHERE number=$1" | mysql -uroot -pParoLL clients | tail -1)
echo -n -e "SET VARIABLE res1 ${RESULT1}"
В консоли при звонке на 1234:

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

    -- Executing [1234@family:1] Answer("SIP/1001-00000006", "") in new stack
    -- Executing [1234@family:2] AGI("SIP/1001-00000006", "clients.sh,1001") in new stack
    -- Launched AGI Script /usr/share/asterisk/agi-bin/clients.sh
<SIP/1001-00000006>AGI Tx >> agi_request: clients.sh
<SIP/1001-00000006>AGI Tx >> agi_channel: SIP/1001-00000006
<SIP/1001-00000006>AGI Tx >> agi_language: ru
<SIP/1001-00000006>AGI Tx >> agi_type: SIP
<SIP/1001-00000006>AGI Tx >> agi_uniqueid: 1461048211.6
<SIP/1001-00000006>AGI Tx >> agi_version: 1.8.32.3
<SIP/1001-00000006>AGI Tx >> agi_callerid: 1001
<SIP/1001-00000006>AGI Tx >> agi_calleridname: Test
<SIP/1001-00000006>AGI Tx >> agi_callingpres: 0
<SIP/1001-00000006>AGI Tx >> agi_callingani2: 0
<SIP/1001-00000006>AGI Tx >> agi_callington: 0
<SIP/1001-00000006>AGI Tx >> agi_callingtns: 0
<SIP/1001-00000006>AGI Tx >> agi_dnid: 1234
<SIP/1001-00000006>AGI Tx >> agi_rdnis: unknown
<SIP/1001-00000006>AGI Tx >> agi_context: family
<SIP/1001-00000006>AGI Tx >> agi_extension: 1234
<SIP/1001-00000006>AGI Tx >> agi_priority: 3
<SIP/1001-00000006>AGI Tx >> agi_enhanced: 0.0
<SIP/1001-00000006>AGI Tx >> agi_accountcode: 
<SIP/1001-00000006>AGI Tx >> agi_threadid: 140469556406016
<SIP/1001-00000006>AGI Tx >> agi_arg_1: 1001
<SIP/1001-00000006>AGI Tx >> 
<SIP/1001-00000006>AGI Rx << SET VARIABLE res1 Иванов Иван
<SIP/1001-00000006>AGI Tx >> 200 result=1
[Apr 19 09:43:31] ERROR[4220]: utils.c:1343 ast_carefulwrite: write() returned error: Broken pipe
    -- <SIP/1001-00000006>AGI Script clients.sh completed, returning 0
    -- Executing [1234@family:3] NoOp("SIP/1001-00000006", "Result_1: Иванов") in new stack
    -- Executing [1234@family:4] Hangup("SIP/1001-00000006", "") in new stack
  == Spawn extension (family, 1234, 4) exited non-zero on 'SIP/1001-00000006'
Как заставить asterisk не отбрасывать значение после пробела?
gosha
Сообщения: 375
Зарегистрирован: 06 сен 2010, 17:41
Контактная информация:

Re: Пробел в переменной через AGI

Сообщение gosha »

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

echo -n -e "SET VARIABLE res1 \"${RESULT1}\""
?
fantomas000
Сообщения: 11
Зарегистрирован: 27 янв 2012, 09:26

Re: Пробел в переменной через AGI

Сообщение fantomas000 »

Отлично!

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

    -- Executing [1234@family:3] NoOp("SIP/1001-0000000e", "Result_1: Иванов Иван") in new stack
Но строка с ошибкой не пропала:
[Apr 19 11:25:59] ERROR[5525]: utils.c:1343 ast_carefulwrite: write() returned error: Broken pipe
Vlad1983
Сообщения: 4251
Зарегистрирован: 09 авг 2011, 11:51

Re: Пробел в переменной через AGI

Сообщение Vlad1983 »

чтоб пропала нужно считать ответ, прежде чем завершить работу скрипта
ЛС: @rostel
fantomas000
Сообщения: 11
Зарегистрирован: 27 янв 2012, 09:26

Re: Пробел в переменной через AGI

Сообщение fantomas000 »

А команда echo разве не считывает?
Аватара пользователя
Wapo
Сообщения: 795
Зарегистрирован: 02 мар 2011, 17:53

Re: Пробел в переменной через AGI

Сообщение Wapo »

Перед вызовом скрипта поставьте Set(AGISIGHUP="no")
fantomas000
Сообщения: 11
Зарегистрирован: 27 янв 2012, 09:26

Re: Пробел в переменной через AGI

Сообщение fantomas000 »

Я в курсе про это, но не работает так:

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

    -- Executing [1234@family:1] Answer("SIP/1001-0000000f", "") in new stack
    -- Executing [1234@family:2] Set("SIP/1001-0000000f", "AGISIGHUP="no"") in new stack
    -- Executing [1234@family:3] AGI("SIP/1001-0000000f", "clients.sh,1001") in new stack
    -- Launched AGI Script /usr/share/asterisk/agi-bin/clients.sh
<SIP/1001-0000000f>AGI Tx >> agi_request: clients.sh
<SIP/1001-0000000f>AGI Tx >> agi_channel: SIP/1001-0000000f
<SIP/1001-0000000f>AGI Tx >> agi_language: ru
<SIP/1001-0000000f>AGI Tx >> agi_type: SIP
<SIP/1001-0000000f>AGI Tx >> agi_uniqueid: 1461056344.15
<SIP/1001-0000000f>AGI Tx >> agi_version: 1.8.32.3
<SIP/1001-0000000f>AGI Tx >> agi_callerid: 1001
<SIP/1001-0000000f>AGI Tx >> agi_calleridname: Denis
<SIP/1001-0000000f>AGI Tx >> agi_callingpres: 0
<SIP/1001-0000000f>AGI Tx >> agi_callingani2: 0
<SIP/1001-0000000f>AGI Tx >> agi_callington: 0
<SIP/1001-0000000f>AGI Tx >> agi_callingtns: 0
<SIP/1001-0000000f>AGI Tx >> agi_dnid: 1234
<SIP/1001-0000000f>AGI Tx >> agi_rdnis: unknown
<SIP/1001-0000000f>AGI Tx >> agi_context: family
<SIP/1001-0000000f>AGI Tx >> agi_extension: 1234
<SIP/1001-0000000f>AGI Tx >> agi_priority: 3
<SIP/1001-0000000f>AGI Tx >> agi_enhanced: 0.0
<SIP/1001-0000000f>AGI Tx >> agi_accountcode: 
<SIP/1001-0000000f>AGI Tx >> agi_threadid: 140469556406016
<SIP/1001-0000000f>AGI Tx >> agi_arg_1: 1001
<SIP/1001-0000000f>AGI Tx >> 
<SIP/1001-0000000f>AGI Rx << SET VARIABLE res1 "Иванов Иван"
<SIP/1001-0000000f>AGI Tx >> 200 result=1
[Apr 19 11:59:04] ERROR[5880]: utils.c:1343 ast_carefulwrite: write() returned error: Broken pipe
    -- <SIP/1001-0000000f>AGI Script clients.sh completed, returning 0
    -- Executing [1234@family:4] NoOp("SIP/1001-0000000f", "Result_1: Иванов Иван") in new stack
    -- Executing [1234@family:5] Hangup("SIP/1001-0000000f", "") in new stack
  == Spawn extension (family, 1234, 5) exited non-zero on 'SIP/1001-0000000f'
gland
Сообщения: 115
Зарегистрирован: 25 янв 2012, 11:07

Re: Пробел в переменной через AGI

Сообщение gland »

На php таких проблем нет, к слову, строку даже не с одним пробелом и кириллицей отправляю.
fantomas000
Сообщения: 11
Зарегистрирован: 27 янв 2012, 09:26

Re: Пробел в переменной через AGI

Сообщение fantomas000 »

Ну с пробелом-то благодаря помощи gosha решили.
А вот ошибка остается...
gland
Сообщения: 115
Зарегистрирован: 25 янв 2012, 11:07

Re: Пробел в переменной через AGI

Сообщение gland »

Так ведь ответили - процедура чтения/записи/отправки завершается некорректно
Кстати, когда-то давно делал костыли с паузой в скрипте
Ответить
© 2008 — 2024 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH