שלום וברכה,
הפנתי קו של ימות המשיח אל השרת שלי (routing_ip)
בקובץ extensions.conf הגדרתי כך:
[public]
exten => 1000,1,NoOp(Starting simple Python AGI script)
same => n,AGI(/etc/asterisk/test/handle_extension.py)
בקובץ handle_extension.py הגדרתי כך:
#!/usr/bin/env python3
import sys
def agi_command(command):
sys.stdout.write(command + '\n')
sys.stdout.flush()
return sys.stdin.readline().strip()
def main():
env = {}
while True:
line = sys.stdin.readline().strip()
if not line:
break
key, value = line.split(':', 1)
env[key.strip()] = value.strip()
agi_channel = env['agi_channel']
agi_command('ANSWER')
agi_command(f'VERBOSE "all env: {env}" 1')
agi_command('STREAM FILE /etc/asterisk/test/Ketapuach ""')
agi_command(f'HANGUP {agi_channel}')
if __name__ == "__main__":
main()
למעשה, השיחה נענית, נכתב בconsole כל המשתנים, הקובץ מושמע (קובץ של 10 שניות), ואז הכל חוזר על עצמו, ולא מתנתקת השיחה
הנה הלוג שמראה שהוא קולט בהצלחה את המשתנים: (צינזרתי חלק מטעמי פרטיות)
<SIP/207.232.31.138-000000e9>AGI Rx << VERBOSE "all env: {'agi_request': '/etc/asterisk/test/handle_extension.py', 'agi_channel': 'SIP/207.232.31.138-000000e9', 'agi_language': 'en', 'agi_type': 'SIP', 'agi_uniqueid': '1721087037.440', 'agi_version': '20.4.0~dfsg+******', 'agi_callerid': '055******', 'agi_calleridname': '0799******', 'agi_callingpres': '0', 'agi_callingani2': '0', 'agi_callington': '0', 'agi_callingtns': '0', 'agi_dnid': '1000', 'agi_rdnis': 'unknown', 'agi_context': 'public', 'agi_extension': '1000', 'agi_priority': '2', 'agi_enhanced': '0.0', 'agi_accountcode': '', 'agi_threadid': '1243178992****}" 1
הנה הלוג הרלוונטי, יש פה את השמעת הקובץ, ואת הבקשת ניתוק, ואת הסטטוס החוזר
<SIP/207.232.31.138-000000e9>AGI Rx << STREAM FILE /etc/asterisk/test/Ketapuach ""
-- <SIP/207.232.31.138-000000e9> Playing '/etc/asterisk/test/Ketapuach.slin' (escape_digits=) (sample_offset 0) (language 'en')
> 0x71114c018d50 -- Strict RTP learning complete - Locking on source address 207.232.31.138:16620
<SIP/207.232.31.138-000000e9>AGI Tx >> 200 result=0 endpos=80105
<SIP/207.232.31.138-000000e9>AGI Rx << HANGUP SIP/207.232.31.138-000000e9
<SIP/207.232.31.138-000000e9>AGI Tx >> 200 result=1
איך אוכל לגרום כן לניתוק השיחה?