Sejujurnya, saya berpikir lama untuk menerbitkan materi ini. Bagi mereka yang tahu cara bekerja dengan AMI Asterisk, tidak ada yang menarik di sini. Bagi mereka yang baru mulai melakukan sesuatu, mereka tidak mungkin memahami kode saya (walaupun saya mencoba menulis dengan jelas). Saya menulis komentar seperti: "Mengapa menggunakan Habr untuk catatan Anda?". Di sisi lain, skrip yang ditampilkan di bawah potongan dapat menjadi titik awal seseorang. Script tidak melakukan apa pun kecuali bahwa ia mengirim semua peristiwa dari AMI ke konsol dan dapat memfilternya. Sebagai contoh, saya tunjukkan di konsol semua panggilan yang termasuk dalam salah satu konteks "zadarma-in" atau "sibseti_in". Jika tertarik, saya bertanya di bawah potongan:
Ada tugas secara real time untuk melihat dari mana bagasi berasal, tombol mana yang ditekan pengguna, yang menjawab panggilan, dll. Untuk waktu yang lama saya ingin mencoba bekerja dengan AMI dari Python, sebelum itu saya memiliki sedikit pengalaman dari Bash dan kemudian mengatur panggilan kembali.
Setelah mencari-cari berbagai perpustakaan yang sudah jadi, saya segera menyadari bahwa tidak ada yang cocok untuk saya. Akibatnya, "sepeda" -nya sendiri ditemukan dalam bentuk skrip yang mengirimkan semua informasi dari AMI ke json. Pustaka Python standar digunakan. Nilai tambahnya adalah bahwa dalam formulir ini mudah untuk menerima dan mem-parsing acara apa pun dan tidak kehilangan tautan ke panggilan tertentu.
Script pertama hanya mencetak peristiwa yang termasuk dalam konteks "zadarma-in" atau "sibseti_in".
Script№1import telnetlib import json import re
Dan skrip kedua, yang menulis semua acara ke konsol, melihat kedua skrip, menjadi jelas apa yang perlu diubah untuk mencapai hasil yang diinginkan. Jika tidak sepenuhnya jelas, maka Anda perlu mengurai json “string [mes]” di fungsi “def telnet_for_string (string)”:
Naskah nomor 2 import telnetlib import time import json import re