Пожалуйста, войдите здесь. Часто задаваемые вопросы О нас
Задайте Ваш вопрос

Установка переменной из питоновского скрипта

1

Добрый день,

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

exten =>111,n,AGI(script.py,${CALLERID(num)})
exten =>111,n,Dial(SIP/${NUMBER})
удалить закрыть спам изменить тег редактировать

спросил 2011-12-22 15:20:12 +0400

godlike Gravatar godlike flag of Ukraine
814 92 24 62

2 Ответа

1

питон это не самый лучший вариант для скрипта. мягко говря.

http://www.voip-info.org/wiki/view/Asterisk+AGI#Python

но вообще там все просто. если вывести одну переменную то надо просто сделать так

print "SET VARIABLE MY_VAR \"something here\" \n"

где MY_VAR это ее имя

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

если вам надо сделать запрос по базе, городить для этого скрипты НЕ НАДО. ибо каждый скрипт запускается и этим тратиться дофига ресурсов. используйте REALTIME.

ссылка удалить спам редактировать

ответил 2011-12-22 16:24:32 +0400

meral Gravatar meral flag of Ukraine
23347 24 20 177
http://pro-sip.net/

обновил 2011-12-22 16:27:10 +0400

Comments

спасибо, помогло, хотя как вы и сказали ругается ERROR[1733]: utils.c:1164 ast_carefulwrite: write() returned error: Broken pipe

godlike ( 2011-12-22 18:06:41 +0400 )редактировать

meral, интересно, а почему "питон это не самый лучший вариант для скрипта. мягко говря."? С чем вы сравниваете?

VetaLkrot ( 2011-12-25 12:39:39 +0400 )редактировать

питон как fastagi очень плохо изза GOL, он вообще крайне фигово работает с множеством нитей. ну а как AGI - каждый раз когда вы его вызываете он вызывает интерпертатор, частично компилирует байт код и резервирует кучу памяти. вобщем хуже питона только java. порверяется просто. берете в цикле 100 раз вашу прогарму запускаете и смотрите сколько времени пройдет. для питона это гдето 20 раз в секунду не больше. джава еще хуже. его вооще только fastagi режиме можно иначе бред. у джавы запуск кода hello-word будет порядка 0.05-0.2 секунды!!

meral ( 2011-12-25 13:35:34 +0400 )редактировать

еще надо не забывать что в реале будет больеш времени, ибо при нагруженой система большой шанс что какойто файлик сечас надо грузить с диска, а диск занят. вобщем если используете питон - больше 5 конектов в секнду не расчитывайте и лучше чтоб было памяти больше чем надо на 400-500 Мб на кеш.

meral ( 2011-12-25 13:39:47 +0400 )редактировать

но это было теория.а практика такая. мне не известно НИ ОДНОГО удачного проекта на питоне для *. зато известно 4 неудачных. даже на джава(в fastagi) работающих проектов больше.

meral ( 2011-12-25 13:41:49 +0400 )редактировать

Проблема с глобал локом "GIL" есть. Но, теже проблемы локов астериска вылезут раньше чем в интерпретаторе питона. Что касательно использования fastagi, то встает другой вопрос - зачем здесь использовать блокирующиеся треды? Ведь есть замечательный фреймворк twisted, который позволяет асинхронно обрабатывать десятки тысяч соединений и как результат, меньше тредов, - нету GIL. Касательно компилирования и резервирования памяти AGI скриптами, так это общая проблема всех интерпретируемых языков с динамической типизацией. Если так судить, то выходит что все скрипты нужно писать на чистом С. Про всякие шаблонизаторы типа PHP я вообще молчу.

VetaLkrot ( 2011-12-25 16:25:53 +0400 )редактировать

ну блин. я же вам говрю это не теория а практика. не работает нормально питон с потоками. я тут ни причием.просто приходилось переписовать питонутый поточный код, который даже переписаный 1в1 на перле работает в 10-15 раз быстрее. я ж не виновать что средний программист на питоне не пишет с использований не блокирующих фреймворков. я на нем не пишу(ну кроме пары учебных проектов и двух по просьбе заказчика). и вообще асинхронный код отлаживать в разы сложнее. смысла не вижу. нет, все что пишеться на диалплане надо писать на диалплане а потом сразу на fastagi писать. срипты на с писать не надо. ибо оно то круто, но получает в 6 раз затратнее и смысла нету. вот щас на С пишу первый раз за 8 лет. но даже на с аги скрпт работать будет не очень. а fastagi и на перле прекрасно работает. и перл в strict режиме это оптимально для таких скриптов. зы. вот кстати php отрабатывает быстрее питона. почему - обратитесь к разработчикам питона. наверно они не любят короткие скриптики.

meral ( 2011-12-25 17:55:54 +0400 )редактировать

Не хочу разводить холивар. Сам раньше писал на перле, несколько лет назад перешел на питон и сразу достиг дзена. Касательно отладки асинхронного кода, то здесь основная проблема не в самом процессе отладки, а в понимании как оно работает, как правильно словить колл-бек и обработать его. А что до обработки диалплана в самом диалплане, здесь согласен на все 100, а в многих случаях можно обойтись и без fastagi. Что каcается удачных проектов на питоне, могу привести в пример нашу систему управления и сбора данных для распределенных колл-центров, где питон демон написан с использованием twited через AMI подключается к астериск серверам и отлавливает необходимые события передавая их подключенным операторам и супервизорам. По сути что-то вроде прокси. Думаю скоро выдерем часть кода и подарим опенсорсу как WebSocet Operator Panel.

VetaLkrot ( 2011-12-25 18:30:20 +0400 )редактировать

ха. так ami то асинхронная. понятно что там асинхронно будет. дзен понятие относительное. на перле удобно ибо он как раз обработки текста. может вы дзен перла просто не грокнули. на перле fastagi пишеться тривильно используя Asterisk::FastAGI в режиме пре-форка. в данном случае конкретно я пишу на чем скажут. и холивары мне не нужны. это практические наблюдения. да у питона задумка красивая. но вот реализация конкретно для * фиговая.

meral ( 2011-12-25 18:51:25 +0400 )редактировать
1

Например http://pyst.sourceforge.net/

ссылка удалить спам редактировать

ответил 2011-12-22 15:49:56 +0400

Bracus Gravatar Bracus
110 4 3 7

Ваш ответ

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!
[скрыть предварительный просмотр]

Закладки и информация

Добавить закладку

подписаться на rss ленту новостей

Статистика

Задан: 2011-12-22 15:20:12 +0400

Просмотрен: 1,171 раз

Обновлен: Dec 22 '11

Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.