Khi bạn đang bắt đầu cuộc gọi, bạn tự đặt ID người gọi. Có hai cách để làm điều này - hoặc trong ứng dụng gốc, hoặc trong dialplan. Một ví dụ về điều này là dưới đây.
Action: Originate
Channel: local/[email protected]
Application: Echo
CallerID: Asterisk <12345>
extensions.conf:
[outgoing]
exten => 12345,1,NoOp()
same => n,Verbose(1, Outgoing Caller ID: {$CALLERID(all)})
same => n,Dial(SIP/${EXTEN})
same => n,Hangup()
hoặc bạn có thể làm điều gì đó như:
exten => 12345,1,NoOp()
same => n,Set(CALLERID(num)=54321)
same => n,Set(CALLERID(name)=Asterisk)
same => n,Verbose(1, Outgoing Caller ID: {$CALLERID(all)})
same => n,Dial(SIP/${EXTEN})
same => n,Hangup()
Bạn sẽ thấy ID người gọi của bạn thiết lập hoặc trong AMI có nguồn gốc hoặc, nếu bạn chọn ghi đè lên nó trong dialplan, những giá trị đó.
Để biết thêm thông tin, hãy xem Manager Action Originate và CallerID Function.
Nguồn
2012-04-08 02:14:48
xin chào cảm ơn câu trả lời của bạn, nhưng tôi không thấy cách sử dụng giải pháp của bạn, vì id người gọi phải là động (tôi gọi anh ấy từ tập lệnh php nhận được tham số dưới dạng tham số). anyway, tôi đang sử dụng cùng một tập lệnh để viết phần mở rộng vào một tệp, sau đó tôi đọc tệp này từ dấu hoa thị với tập lệnh AGI, giải pháp này tôi làm việc ngay bây giờ. exten => 4004, n, AGI (get_caller_id.php) exten => 4004, n, Đặt (CALLERID (num) = $ {caller_id}) cảm ơn. –
Ví dụ trên đã trả lời câu hỏi của bạn về cách đặt ID người gọi trên kênh được tạo thông qua nguồn gốc AMI. Tôi đã không cố gắng viết đơn của bạn cho bạn. Nếu bạn cần có một ID người gọi động, chỉ cần sử dụng các biến quay số thay vì các giá trị mã hóa cứng được minh họa ở trên và đặt các biến từ tập lệnh AGI của bạn. –
tôi không nói tôi đang sử dụng AMI !! tôi chỉ đơn giản gọi là bắt nguồn từ một kịch bản khác. cảm ơn bạn :) –