2012-02-08 17 views
7

Tôi muốn xây dựng một dịch vụ cho phép người dùng nghe cuộc gọi trực tiếp từ trình duyệt của họ.Asterisk + Node.js + Trình duyệt Streaming

Tôi có một số kinh nghiệm với Asterisk và điều này dường như đủ linh hoạt để làm những gì tôi đã mô tả.

Node.js có vẻ tốt vì nó được thiết kế để xử lý đồng thời tốt và tôi thích JavaScript.

Trong trình duyệt tôi thấy rằng thẻ âm thanh HTML5, vì nó xử lý việc phát từ nguồn phát trực tuyến, sẽ tốt để phát âm thanh.

Một đồng nghiệp của tôi đã làm việc cùng nhau bản demo của khái niệm này bằng Icecast, nhưng không thể hoàn thành nó. Cũng có những thời gian trễ đáng kể.

Câu hỏi của tôi là:

Tôi nên bắt đầu như thế nào?

Mọi trợ giúp đều được đánh giá cao!

Cập nhật:

tôi thấy một bài thuyết trình thảo luận về việc thực hiện SIP trên đầu trang của WebSockets qua một proxy SIP trên backend:

http://sip-on-the-web.aliax.net/

Một khi tôi có điều này và chạy, tiếp theo bước sẽ được thực hiện streaming. Có vẻ như tôi sẽ có thể ủy quyền đầu ra âm thanh thường sẽ chuyển đến ứng dụng khách sip, thông qua một máy chủ phụ sau đó truyền trực tuyến trình duyệt đó tới trình duyệt. Tôi tự hỏi tại sao điều này không thể được thực hiện tất cả trong bộ nhớ? Sau đó, không cần phải viết và đọc các tập tin như tiền thu được cuộc gọi.

Trả lời

8

Nếu bạn sẵn sàng chờ Asterisk 11, chúng tôi hiện đang làm việc để thực hiện hỗ trợ cho WebSockets trực tiếp trong Asterisk.Thông tin thêm về nó ở đây:

Asterisk 11 WebRTC/RTCWeb Support

tôi sẽ chỉ trích Kevin đây, kể từ khi ông tóm tắt nó tốt hơn sau đó tôi có thể:

"Hôm nay, các ngành phát triển trong tiến trình có hỗ trợ cho việc vận chuyển WebSocket Giao thức (được sử dụng để truyền thông báo hiệu giữa trình duyệt và Asterisk), SIP qua WebSocket (hiện đang được chuẩn hóa bởi IETF) và ICE/STUN/TURN (cơ chế xử lý phương tiện cho NAT traversal và bảo mật thiết lập kết nối). Trình điều khiển kênh Jingle/Google Talk/Google Voice và chúng tôi dự định hỗ trợ Jingle trên WebSocket. Tại thời điểm này, chúng tôi không có giải pháp hoàn chỉnh (một bản dựng Canary mới của trình duyệt Google Chrome là cần thiết với một vài thay đổi nhỏ), nhưng mỗi phần đã được thử nghiệm và chúng tôi rất vui khi thấy nó hoạt động cùng nhau. Chúng tôi muốn cảm ơn Iñaki và José từ dự án SIP-on-the-Web đã cung cấp cho chúng tôi JavaScript SIP của họ để sử dụng trong quá trình thử nghiệm của chúng tôi, và có lẽ chúng tôi sẽ thử nghiệm với PhonoSDK để hỗ trợ cho Jingle. "

2

này dường như là một hướng dẫn tốt đẹp

Remote call-center solution using Node.js

+0

Cảm ơn bạn đã đăng bài, nhưng tôi đã thấy điều đó rồi. Nó không đi vào phía trình duyệt, nó chỉ sử dụng Phono, dựa trên flash – Jonathan

0

Tôi nghĩ rằng cố gắng để dòng một tập tin âm thanh trong khi nó đang được ghi lại sẽ có những vấn đề độ trễ cực đoan rằng bạn sẽ không thể để có được xung quanh. Nếu bạn muốn nhận được thời gian thực nghe cuộc trò chuyện qua điện thoại, tôi khuyên bạn nên xem xét Phono. Nó là một plugin JQuery biến trình duyệt web của bạn thành một chiếc điện thoại. Sau đó, bạn sẽ chỉ có người nghe tham gia vào cuộc trò chuyện với nó trên câm.

+0

Tôi đã thấy Phono trước đây. , bu t, như tôi hiểu nó: bạn phải sử dụng dịch vụ Phono và plugin thực sự sử dụng flash. Tôi không cần truy cập micrô của người dùng, đó là lý do tại sao tôi tin rằng họ đang sử dụng flash, do đó phát trực tuyến vào thẻ âm thanh, nếu có thể, có vẻ như nó sẽ hoạt động. – Jonathan

+0

Phát trực tuyến có thể hoạt động nếu bạn có thể chấp nhận các vấn đề về độ trễ. Nó sẽ không bao giờ là thời gian thực. Tôi tin rằng bạn cần một kênh truyền thông mở để nghe trong thời gian thực. Bạn có thể muốn xem xét các điện thoại SIP dựa trên trình duyệt khác như thế này [http://www.mizu-voip.com/Products/WebPhone.aspx]. –

+0

Nếu tôi có thể truy cập ổ cắm trong trình duyệt, tại sao tôi không thể triển khai trình khách sudo-sip bằng ổ cắm trực tiếp đến máy chủ? Tôi chắc chắn rằng đó không phải là một nhiệm vụ tầm thường, nhưng, tôi tự hỏi nếu nó có thể? – Jonathan

0

Nếu bạn không nhớ độ trễ (do đệm luồng Icecast), Asterisk có thể truyền tới Icecast (định cấu hình ứng dụng Ices của Asterisk).

Nếu bạn không thể chịu đựng độ trễ, bạn sẽ cần trình khách SIP dựa trên trình duyệt. Thật không may, không có nhiều người trong số họ không bị khóa vào hệ thống điện thoại của người khác. Bạn có thể thử red5phone (http://code.google.com/p/red5phone/) nhưng điều đó yêu cầu bạn thiết lập máy chủ Red5.