2013-07-24 20 views
7

Tôi đang thiết lập một hệ thống cuộc gọi hội nghị khá đơn giản, nơi người dùng nhập mã PIN và được kết nối với một hội nghị liên kết với điều đó. Tôi cũng thiết lập nó để họ ghi lại tên của họ trước khi vào phòng.Sử dụng Say verb cho tất cả người tham gia Hội nghị

Kế hoạch của tôi là lấy URL ghi, sau đó nhận danh sách người tham gia và thực hiện cuộc gọi REST API cho mỗi người gọi sửa đổi cuộc gọi của họ thành Nói "Hiện đang nhập", sau đó Phát url ghi. Tôi nghĩ rằng tôi sẽ phải gửi chúng trở lại vào phòng sau đó, tôi không chắc chắn.

Tôi nghĩ rằng việc sửa đổi từng cuộc gọi sẽ đưa họ ra khỏi phòng Hội thảo, điều này không lý tưởng. Có cách nào dễ hơn để sử dụng Say/Play cho tất cả các thành viên của một hội nghị được xây dựng trong REST API không?

Trả lời

8

Ai đó trên diễn đàn Twilio quan tâm đến the very same question và câu trả lời hiện tại không có lệnh gọi API REST trực tiếp cho điều đó.

Điều bạn cần làm là khi người tham gia tham gia hội nghị, you'll use the REST API to make Twilio dial back in to your application. Bạn có thể chọn cách phát hiện ra rằng bạn đang gọi vào hội nghị của riêng bạn, tuy nhiên bạn thích (ví dụ, so sánh các số điện thoại đi và đến cho sự bình đẳng); khi bạn đã phát hiện ra rằng, bạn có thể tham gia cuộc gọi đó trực tiếp đến hội nghị và sử dụng các động từ TwiML<Say><Play> để phát lại phần giới thiệu cho mọi người.

Đó là một chút phức tạp, nhưng bằng cách này bạn sẽ không xóa từng người tham gia khỏi hội nghị (ngăn họ nghe nhau một lúc) và sau đó nối lại họ.


Đây là thứ tương tự như giải pháp tốt nhất từ ​​đầu đến cuối.

Đầu tiên, người dùng quay số và bạn thực hiện các lời nhắc chuẩn để lấy mã PIN cho phòng hội nghị và tên của họ.

<?xml version="1.0" encoding="UTF-8"?> 
<Response> 
    <Gather action="/conference/pin" finishOnKey="#"> 
     <Say>Please the conference pin number followed by the pound key.</Say> 
    </Gather> 
</Response> 

<?xml version="1.0" encoding="UTF-8"?> 
<Response> 
    <Say>Say your name and then press the pound key.</Say> 
    <Record action="/conference/name" finishOnKey="#" /> 
</Response> 

Bây giờ, khi bạn có pin và ghi của người dùng, hai điều sẽ xảy ra; phản hồi từ bưu điện đến /conference/name sẽ chứa <Conference> động từ, đặt người sử dụng trong phòng:

<?xml version="1.0" encoding="UTF-8"?> 
<Response> 
    <Dial> 
    <Conference>{conference ID}</Conference> 
    </Dial> 
</Response> 

... và, không đồng bộ đó, nó sẽ sử dụng REST API để bắt đầu một cuộc gọi mới trở lại phòng họp.

POST /2010-04-01/Accounts/{AccountSid}/Calls 
From = {your conference phone number} 
To = {your conference phone number} 
SendDigits = wwww{conference PIN}# 
Url = /conference/announce?name={name ID} 

Bây giờ, bit tiếp theo trở nên khó hiểu. Twilio bây giờ sẽ nói chuyện với URL gọi lại của bạn cho kết thúc cuộc gọi và URL bạn đã chỉ định ở trên cho kết thúc cuộc gọi đi. Trình xử lý cuộc gọi đến của bạn sẽ cần phải phát hiện ra rằng dòng hội nghị đang gọi lại vào chính nó và hoạt động khác nhau; đầu tiên nó sẽ cần phải đáp ứng với TwiML đơn giản cho phép kết thúc cuộc gọi để nhập mã pin cho phòng hội nghị.

<?xml version="1.0" encoding="UTF-8"?> 
<Response> 
    <Gather action="/conference/announce-pin" finishOnKey="#" /> 
</Response> 

Thông số SendDigits của POST sẽ cung cấp các chữ số mà TwiML mong đợi. Hành động đó sau đó sẽ phản hồi bằng hội nghị trong cuộc gọi mới.

<?xml version="1.0" encoding="UTF-8"?> 
<Response> 
    <Dial> 
    <Conference>{conference ID}</Conference> 
    </Dial> 
</Response> 

Đoạn cuối cùng của câu đố là TwiML được phát ra bởi URL bạn đã chỉ định trong POST. Đó là đánh dấu sẽ chạy khi cuộc gọi lặp lại được thêm vào hội nghị.

<?xml version="1.0" encoding="UTF-8"?> 
<Response> 
    <Play>/conference/name-recordings/{name ID}</Play> 
    <Say>has joined the call.</Say> 
    <Hangup /> 
</Response> 

Đánh dấu đó chạy, phát tên người gọi và tin nhắn vào phòng hội nghị, sau đó gác máy.

+0

Tôi đang cố gắng suy nghĩ về giải pháp của bạn, nhưng tôi không theo dõi chính xác. Có lẽ nếu bạn tham chiếu các cuộc gọi API REST cụ thể. – Alex

+0

Tôi đề xuất sử dụng "/ 2010-04-01/Accounts/{AccountSid}/Conferences/{ConferenceSid}/Participants" để nhận mỗi callSid, ​​sau đó POST một Url cho mỗi "/ 2010-04-01/Accounts/{ AccountSid}/Calls/{CallSid} "có Play/Say TwiML. Tôi giả định điều này sẽ loại bỏ những người tham gia từ Hội nghị, nhưng tôi không chắc chắn về điều này. – Alex

+0

Nó thực sự loại bỏ những người tham gia từ hội nghị. Tôi không thể tạo mẫu cho bạn ngay bây giờ, nhưng có lẽ sau ngày hôm nay hoặc ngày mai tôi có thể phác thảo toàn bộ quá trình cho bạn. –

Các vấn đề liên quan