1. MeetMe là gì?
MeetMe là một tính năng trong Asterisk cho phép nhiều người có thể tham gia cuộc gọi cùng lúc. Phiên bản mới cho phép người dùng tăng/giảm âm lượng nói và nghe (tách biệt với nhau và với các người khác); các menu “admin” và “user” đã thay đổi, và có bổ sung thêm các tập tin âm thanh với phiên bản này. Tuy nhiên, nếu một người gọi vào qua kênh Zaptel không có phát hiện DTMF cấp cao thì họ có thể không thể vào/ra menu hoặc thực hiện bất kỳ sửa đổi nào khác, vì bộ phát hiện DTMF phần mềm sẽ không thể nhận ra DTMF từ thiết bị của họ.
Triển khai MeetMe trong Asterisk có một số bước cơ bản như sau:
- Cài đặt và cấu hình Asterisk: Trước tiên, bạn cần cài đặt và cấu hình Asterisk trên máy chủ của bạn. Bạn có thể tìm kiếm các hướng dẫn cài đặt và cấu hình trên trang chủ của Asterisk hoặc trên các diễn đàn hỗ trợ của Asterisk.
- Thêm lệnh MeetMe vào cấu hình: Sau khi cài đặt và cấu hình Asterisk, bạn cần thêm lệnh MeetMe vào cấu hình của hệ thống tổng đài. Điều này sẽ cho phép bạn tạo và quản lý các phòng cuộc gọi MeetMe.
- Tạo các phòng cuộc gọi: Bạn có thể tạo các phòng cuộc gọi MeetMe bằng cách sử dụng lệnh MeetMe trong cấu hình của hệ thống tổng đài. Bạn cần chỉ định một số phòng cho mỗi cuộc gọi và mật khẩu nếu muốn.
- Tham gia cuộc gọi: Người dùng có thể tham gia cuộc gọi MeetMe bằng cách sử dụng số điện thoại hoặc các lệnh điều khiển từ bàn phím để gọi đến số phòng đã chọn.
- Sử dụng các lệnh điều khiển từ bàn phím: Khi tham gia cuộc gọi MeetMe, người dùng có thể sử dụng các lệnh điều khiển từ bàn phím để quản lý cuộc gọi, chẳng hạn như nghe thêm người, tắt mic, chuyển chế độ nghe, v.v.
- Quản lý cuộc gọi: Bạn có thể quản lý các cuộc gọi MeetMe bằng cách sử dụng các lệnh trong cấu hình của hệ thống tổng đài hoặc sử dụng các công cụ quản lý cuộc gọi MeetMe tương thích với Asterisk.
Asterisk là một chuỗi tùy chọn cho phép bạn thiết lập các tùy chọn cho một cuộc hội nghị. Tùy chọn này có thể được chỉ định trong lệnh “meetme” khi tạo một cuộc hội nghị mới.
Ví dụ: để tạo một cuộc hội nghị có số ID là 1234 với tùy chọn “mute on entry” và “admin only” bạn có thể sử dụng lệnh sau:
meetme 1234 aMO
Trong đó :
- “a” là tùy chọn “admin only” cho phép chỉ người quản lý mới có thể vào cuộc hội nghị.
- “M” là tùy chọn “mute on entry” cho phép tắt tiếng khi người dùng vào hội nghị.
- “O” là tùy chọn “operator” cho phép có một người quản lý trong hội nghị.
Ngoài ra còn có 1 số tuỳ chọn khác như:
Dưới đây là danh sách các tùy chọn có sẵn trong MeetMe trong Asterisk:
“a”: Tùy chọn “admin only” cho phép chỉ người quản lý mới có thể vào cuộc hội nghị.
“A”: Tùy chọn “auto-enter” cho phép người dùng tự động vào hội nghị sau khi kết nối.
“d”: Tùy chọn “dynamic” cho phép tạo một cuộc hội nghị tự động khi có người dùng đầu tiên vào.
“e”: Tùy chọn “exit-context” cho phép chỉ định một ngõ ra để chuyển người dùng ra khỏi hội nghị.
“E”: Tùy chọn “endconf-when-empty” cho phép tự động kết thúc hội nghị khi không còn người dùng.
“M”: Tùy chọn “mute on entry” cho phép tắt tiếng khi người dùng vào hội nghị.
“O”: Tùy chọn “operator” cho phép có một người quản lý trong hội nghị.
“q”: Tùy chọn “quiet” cho phép tắt tiếng khi người dùng vào hội nghị và không cho phép họ nói.
“r”: Tùy chọn “record” cho phép ghi lại cuộc hội nghị.
“s”: Tùy chọn “set-mark”: cho phép thiết lập một đánh dấu trên cuộc gọi để ghi lại.
“t”: Tùy chọn “talker detection” cho phép phát hiện người nói.
“w”: Tùy chọn “wait-marked” cho phép chờ đợi cho đến khi có một đánh dấu trên cuộc gọi.
“x”: Tùy chọn “exec” cho phép chạy một ghi chú khi một người dùng vào hoặc rời khỏi hội nghị.
“X”: Tùy chọn “exit-sound” cho phép chỉ định một âm thanh để phát khi người dùng rời khỏi hội nghị.
“1”: Tùy chọn “one-touch-record” cho phép bắt đầu ghi lại ngay khi tạo cuộc hội nghị.
“D”: Tùy chọn “dsp-drop-silence” cho phép tự động loại bỏ âm thanh im lặng trong cuộc hội nghị.
Chú ý: Cần phải cấu hình thêm các thông số để MeetMe hoạt động đúng, ví dụ như số lượng người trong cuộc họp, tên cuộc họp, mã pin, …Việc triển khai MeetMe có thể tùy thuộc vào cấu hình, topology mạng và thiết bị sử dụng của bạn, vì vậy cần tham khảo tài liệu của Asterisk để biết thêm chi tiết.
2. Chi tiết một số tuỳ chọn trong MeetMe
2.1. Tùy chọn ‘s’.
Không có tùy chọn ‘s’ hoặc tùy chọn ‘p’ hoạt động nếu sử dụng cùng với ‘X’.
Người dùng (không có tùy chọn ‘a’ được thiết lập): Khi nhấn * sẽ phát menu giọng “Vui lòng nhấn 1 để tắt hoặc bật giọng của bạn”; Asterisk v1.2 bây giờ có tùy chỉnh âm lượng cho các thành viên MeetMe riêng lẻ bằng cách nhấn * sau đó là 4 hoặc 6; tương tự patch 4170 cho phép bạn kiểm soát âm lượng của giọng của mình bằng cách nhấn * sau đó là một loạt 7 và 9 để tăng hoặc giảm cho đến khi bạn nhấn 8 để chấp nhận và quay lại chế độ hoạt động bình thường.
Quản trị viên (với tùy chọn ‘a’ được thiết lập): Khi nhấn * sẽ phát menu giọng “Nhấn 1 để tắt/bật giọng của bạn, 2 để khóa/mở khóa cuộc họp này”
1 – tắt/bật giọng
2 – khóa/mở khóa cuộc họp
3 – đuổi người dùng cuối cùng tham gia cuộc họp
4 – giảm âm lượng cuộc họp với mỗi 4 bạn nhấn – kết thúc với 8
6 – tăng âm lượng cuộc họp với mỗi 6 bạn nhấn – kết thúc với 8
7 – giảm âm lượng của bạn – kết thúc với 8
9 – tăng âm lượng của bạn – kết thúc với 8
Lưu ý: Bạn không thể khóa ra người dùng quản trị hoặc đuổi người dùng quản trị – nhưng cả hai đều hoạt động tốt trên người dùng thông thường!
2.2. Tùy chọn ‘q’.
Trong Asterisk <= 1.0.9 có một lỗi lâu dài và khó chịu: Delay âm thanh trong MeetMe sử dụng SIP khi không ở chế độ ‘q’ – có lẽ đã sửa trong Asterisk v1.2. Xem lỗi 4252 và lỗi 3599
2.3. Tùy chọn ‘r’.
Thiết lập ${MEETME_RECORDINGFILE} trước khi bắt đầu MeetMe() với tùy chọn ghi. Nếu không, file âm thanh cuộc họp được ghi sẽ được lưu trữ trong /var/lib/asterisk/sounds.
exten => s,n(record),SetVar(MEETME_RECORDINGFILE=/var/spool/asterisk/meetme/conference_recording-${EPOCH}-${USER});
exten => s,n,MeetMe(,rDMpc)
2.4. Tùy chọn ‘j’ của chan_local
Jitterbuffer của Asterisk cho IAX và SIP trong Asterisk 1.4 (và có lẽ 1.6 cũng như vậy) chỉ hoạt động cho cuộc gọi kết hợp kênh và không áp dụng cho cuộc gọi đến các ứng dụng như MeetMe() hoặc Record() vv. Tuy nhiên, bằng cách sử dụng cấu trúc kênh Local cùng với tùy chọn ‘j’, có một giải pháp tạm thời có sẵn.
[some-context]
exten => 123,1,Dial(Local/124 <at> some-context/nj)
exten => 124,1,MeetMe(some-room,dM)
Áp dụng bộ đệm jitter như vậy có thể tăng chất lượng âm thanh, nhưng điều đó phải trả giá bằng độ trễ sẽ tăng.
3. Cấu hình
3.1. Ví dụ đơn giản trong cấu hình MeetMe
Cấu hình MeetMe trong Asterisk có thể chia làm hai bước chính.
Bước 1: Cấu hình hội nghị:
- Mở tập tin “meetme.conf” trong thư mục cấu hình của Asterisk.
- Thêm một section mới với tên là tên hội nghị mà bạn muốn tạo.
Ví dụ:
[my_conference]
conf => 1234
pin => 1234
adminpin => 1234
Trong đó :
- [my_conference] là tên của hội nghị
- conf => 1234 là mã hội nghị
- pin => 1234 là mã pin cần thiết để vào hội nghị
- adminpin => 1234 là mã pin cần thiết để quản trị hội nghị
Bước 2: Cấu hình quy tắc chuyển cuộc gọi:
- Mở tập tin “extensions.conf” trong thư mục cấu hình của Asterisk.
- Tìm đến context mà bạn muốn cấu hình quy tắc chuyển cuộc gọi, ví dụ context “internal”
- Thêm các lệnh “exten” với pattern và các actions tương ứng để chuyển cuộc gọi tới hội nghị.
Ví dụ:
exten => _8XXX,1,MeetMe(1234|p)
Trong đó :
- _8XXX là pattern, nghĩa là mọi số bắt đầu bằng 8 sẽ được chuyển tới hành động sau
- MeetMe(1234|p) là hành động, nghĩa là chuyển cuộc gọi tới hội nghị có mã là 1234 và có yêu cầu nhập mã pin.
3.2. Ví dụ phức tạp hơn trong cấu hình MeetMe.
Bước 1: Cấu hình hội nghị trong meetme.conf.
[sales_meeting]
conf => 1000
pin => 1234
adminpin => 4321
record => yes
recordingfile => /var/spool/asterisk/meetme/sales_meeting
Trong đó, hội nghị có tên là “sales_meeting”, mã hội nghị là 1000, mã pin để vào hội nghị là 1234 và mã pin để quản trị hội nghị là 4321. Hội nghị sẽ được ghi lại và lưu trữ trong thư mục /var/spool/asterisk/meetme/sales_meeting
Bước 2: Cấu hình quy tắc chuyển cuộc gọi tới hội nghị trong extensions.conf:
exten => _8XXX,1,Goto(check_auth,s,1)
exten => _8XXX,n,MeetMe(1000|p)
exten => _8XXX,n,Hangup()
exten => check_auth,1,Authenticate(1234)
exten => check_auth,n,GotoIf($["${AUTH_STATUS}" = "OK"]?authorized:not_authorized)
exten => check_auth,n(authorized),MeetMe(1000|p)
exten => check_auth,n,Hangup()
exten => check_auth,n(not_authorized),Playback(auth-invalid)
exten => check_auth,n,Hangup()
Trong đó, quy tắc chuyển cuộc gọi tới hội nghị sẽ bắt đầu bằng các số bắt đầu bằng 8. Cuộc gọi sẽ được chuyển đến extension check_auth để xác thực mã pin. Nếu mã pin đúng, cuộc gọi sẽ được chuyển tới hội nghị với mã 1000 và yêu cầu nhập mã pin. Nếu mã pin sai, cuộc gọi sẽ nghe đoạn ghi âm “auth-invalid” và kết thúc cuộc gọi.
Lưu ý: Đây chỉ là ví dụ cấu hình MeetMe phức tạp, các tùy chọn và cấu hình có thể khác nhau tùy vào nhu cầu của bạn. Bạn có thể thêm các tùy chọn khác như chuyển cuộc gọi tới các context khác, thực hiện các hành động khác trên cuộc gọi, hoặc sử dụng các lệnh khác để xử lý cuộc gọi. Tuy nhiên, bạn cần tìm hiểu kỹ tài liệu của Asterisk và tham khảo các ví dụ cấu hình để hiểu rõ hơn về cách sử dụng MeetMe.
4. Sử dụng MeetMe
Sử dụng lệnh “meetme” trong dialplan để chuyển cuộc gọi tới hội nghị, ví dụ:
exten => 1234,1,MeetMe(1234)
Trong đó, 1234 là mã hội nghị cần tham gia.
- Để kết thúc hội nghị, người dùng có thể sử dụng lệnh hangup hoặc *1 (default)
- Để người dùng có thể tham gia hội nghị mà không cần mã pin, bạn có thể thiết lập pin = 0 trong file meetme.conf
- Các tùy chọn khác có thể xem thêm tại tài liệu của Asterisk.
5. Khử tiếng vang trong MeetMe khi có hơn 10 người dùng.
Có một số cách để khử tiếng vang trong MeetMe khi có nhiều người dùng:
– Sử dụng tùy chọn “quiet” : Sử dụng tùy chọn “quiet” trong cấu hình MeetMe sẽ tắt tiếng vang khi người dùng không nói.
exten => _8XXX,1,MeetMe(1234|q)
– Sử dụng tùy chọn “automute” : Sử dụng tùy chọn “automute” trong cấu hình MeetMe sẽ tắt tiếng của người dùng khi tiếng vang quá cao.
exten => _8XXX,1,MeetMe(1234|M(5))
– Sử dụng confbridge : Confbridge là một module của Asterisk mà cung cấp các tùy chọn điều chỉnh âm thanh và hỗ trợ tốt hơn so với MeetMe.
– Sử dụng các phần mềm 3rd party: Có nhiều phần mềm 3rd party cung cấp các tính năng khử tiếng vang, chẳng hạn như thiết lập ngưỡng âm lượng, tự động tắt tiếng, hoặc thiết lập các quy tắc cho tiếng vang.
– Sử dụng các thiết bị trợ lý âm thanh: Có nhiều thiết bị trợ lý âm thanh có thể kết nối với hệ thống điện thoại của bạn để giảm tiếng vang trong hội nghị.
Lưu ý: Các cấu hình trên là một số cách để giảm tiếng vang trong MeetMe, tuy nhiên, phù hợp với từng trường hợp cụ thể. Hãy tìm hiểu kỹ từng cách và thử nghiệm để tìm ra cách tốt nhất cho hệ thống của bạn.
6. Merging Conferences trong MeetMe
Merging Conferences là tính năng cho phép kết hợp hai hoặc nhiều hội nghị MeetMe thành một hội nghị duy nhất. Điều này có thể giúp tăng hiệu quả cho việc tương tác giữa các thành viên trong hội nghị.
Cách thực hiện Merging Conferences trong MeetMe:
- Tạo hai hoặc nhiều hội nghị MeetMe với các mã hội nghị khác nhau.
- Sử dụng lệnh “MeetMeAdmin” để kết hợp hai hoặc nhiều hội nghị. Ví dụ:
MeetMeAdmin(conf1,merge,conf2)
Trong đó, conf1 và conf2 là mã hội nghị cần kết hợp.
Sau khi kết hợp, tất cả thành viên trong hai hội nghị sẽ được chuyển tới hội nghị mới với mã hội nghị là conf1. Tất cả cuộc gọi đến conf2 sẽ được chuyển tới conf1.
Bạn có thể kết hợp nhiều hội nghị bằng cách thêm thêm mã hội nghị vào lệnh “merge”. Ví dụ:
MeetMeAdmin(conf1,merge,conf2,conf3,conf4)
Trong đó, conf1, conf2, conf3, và conf4 là các mã hội nghị cần kết hợp.
Lưu ý: Tính năng Merging Conferences trong MeetMe chỉ có sẵn trong phiên bản Asterisk 1.4 hoặc cao hơn.
7. Cách nói chuyện riêng giữa 2 người dùng với nhau trong hội nghị mà không ai biết.
Trong MeetMe, có một số cách để giúp hai người dùng nói chuyện riêng với nhau trong hội nghị:
– Sử dụng tùy chọn “private”: Sử dụng tùy chọn “private” trong cấu hình MeetMe sẽ cho phép hai người dùng nói chuyện riêng với nhau trong hội nghị mà không nghe được bởi các thành viên khác.
exten => _8XXX,1,MeetMe(1234|p)
Sử dụng tùy chọn “whisper” : Sử dụng tùy chọn “whisper” trong cấu hình MeetMe sẽ cho phép người quản trị gọi đến một người trong hội nghị và nói chuyện riêng với họ mà không nghe được bởi các thành viên khác.
exten => _8XXX,1,MeetMe(1234|W,user1)
Trong đó, user1 là số người dùng muốn gọi riêng.
– Sử dụng tùy chọn “admin” : Sử dụng tùy chọn “admin” trong cấu hình MeetMe sẽ cho phép người quản trị gọi vào hội nghị và nói chuyện riêng với các thành viên trong hội nghị mà không nghe được bởi các thành viên khác.
exten => _8XXX,1,MeetMe(1234|A)
Các cấu hình trên là một số cách để giúp hai người dùng nói chuyện riêng với nhau trong MeetMe.
Bạn có thể tìm hiểu thêm chi tiết về cách sử dụng MeetMe trong tài liệu của Asterisk.
Tài liệu tham khảo: https://www.voip-info.org/asterisk-cmd-meetme/