Xử lý cuộc gọi đi qua SIP Trunk
Chủ đề này mô tả cách SkyX PBX xử lý các cuộc gọi đi thông qua một SIP trunk. Cụ thể, cấu trúc tin nhắn INVITE và cách các giá trị trường SIP được điền.
DID Pool
Để hiểu khái niệm về Định danh số truy cập trực tiếp từ bên trong (DID - Direct Inward Dialing), vui lòng tham khảo bài viết DID là gì?.
Vì SkyX PBX là một hệ thống đa người thuê (multi-tenant), nếu nhiều người thuê thiết lập trunk từ cùng một nhà cung cấp và sử dụng cùng một số DID cho các quy tắc inbound của họ, PBX sẽ không biết người thuê nào để định tuyến cuộc gọi đến. Tương tự, nếu một máy nhánh từ một người thuê sử dụng ID người gọi đi thuộc về người thuê khác, nó có thể gây ra xung đột. Để ngăn chặn những vấn đề này, SkyX PBX đã giới thiệu khái niệm về DID pool (nhóm số DID), là một dải số DID được chỉ định và gán cho mỗi người thuê.
Trunk được thêm bởi Quản trị viên hệ thống (Trunks Added by System Admin)
Khi Quản trị viên hệ thống gán một trunk cho một người thuê, họ phải cấu hình một DID pool duy nhất cho người thuê đó. DID pool không được trùng lặp với DID pool được gán cho các người thuê khác. Một khi trunk được gán, người thuê chỉ có thể sử dụng các số DID từ DID pool cụ thể của họ khi tạo các quy tắc inbound.
Trunk được thêm bởi Quản trị viên người thuê
Nếu Quản trị viên người thuê thêm một trunk, họ được yêu cầu chỉ định một DID pool cho trunk đó. Bất kỳ quy tắc inbound nào được người thuê tạo phải sử dụng các số DID từ nhóm này. Tương tự như các trunk được thêm bởi Quản trị viên hệ thống, DID pool phải là duy nhất và không thể trùng lặp với các DID pool từ cùng nhà cung cấp trunk.
Ví dụ, nếu Người thuê A cấu hình một trunk với nhà cung cấp XYZ và đặt DID pool là 1000-2000, và Người thuê B cấu hình một trunk với cùng nhà cung cấp nhưng đặt DID pool là 2000-3000, điều này sẽ tạo ra xung đột. Vì cả hai người thuê đều sử dụng cùng nhà cung cấp trunk với các DID pool trùng lặp, PBX sẽ không biết cách định tuyến cuộc gọi đến số DID 2000.
Đánh số DID Pool
DID pool có thể bao gồm các số riêng lẻ hoặc các dải số, như minh họa dưới đây:
- 1000-2000
- 282556000-282556900
- 101; 203; 300-450
ℹ️ Lưu ý: Số DID hoặc dải số không thể bắt đầu bằng "+", "0" hoặc "00" khi thêm chúng vào DID pool cho một người thuê. Nếu số DID hoặc dải số của bạn bắt đầu bằng bất kỳ ký tự nào trong số này, vui lòng xóa chúng trước khi nhập.
Cấu trúc tin nhắn INVITE
Các giá trị được bao gồm trong các tin nhắn INVITE đi được gửi bởi SkyX PBX có thể được cấu hình trong cài đặt SIP trunk trên trang Outbound Parameters (Tham số đi). Điều này cho phép bạn tùy chỉnh các giá trị được gán cho mỗi trường SIP, sẽ được thảo luận chi tiết hơn sau. Dưới đây là một ví dụ về tin nhắn INVITE cơ bản được gửi bởi SkyX PBX khi khởi tạo một cuộc gọi đi thông qua một SIP trunk:
INVITE sip:88888888@pstn.twillio.com:5060 SIP/2.0
Via: SIP/2.0/UDP 192.168.0.11:5060;branch=z9hG4bK-524287-1---39f4bc06b915b70f;rport
Max-Forwards: 19
Contact: <sip:101@192.168.0.11:5060;ob>
To: <88888888@pstn.twillio.com>
From: <sip:101@sip.skyx.io>;tag=35c2342b
Call-ID: DSSzmYKnCwhMeB1TWUwv2A..
CSeq: 1 INVITE
Session-Expires: 300
Min-SE: 90
Accept-Language: en
Allow: REGISTER, INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, SUBSCRIBE, UPDATE, INFO, MESSAGE, PUBLISH
Content-Type: application/sdp
Supported: replaces, norefersub, tdialog, join, timer
User-Agent: SkyX UC - Call Manager 16.0.0.302
X-CID: QERh8-brREchTYRqTSTALQ..
X-Session-Id: 678271070897180672
X-Trunk-Name: CallCentric
Content-Length: 361
Các trường SIP có thể cấu hình (Configurable SIP Fields)
SkyX PBX không cho phép tùy chỉnh hoàn toàn tin nhắn INVITE, có nghĩa là cấu trúc cơ bản của nó phải luôn bao gồm các trường SIP thiết yếu được hiển thị ở trên. Tuy nhiên, SkyX PBX cho phép cấu hình các trường sau:
- Request Line URI : User Part
- Request Line URI : Host Part
- Contact : User Part
- Contact: Host Part
- To : Display Name
- To : User Part
- To : Host Part
- From : Display Name
- From : User Part
- From : Host Part
- Remote Party ID - Called Party : Display Name
- Remote Party ID - Called Party : User Part
- Remote Party ID - Called Party : Host Part
- Remote Party ID - Calling Party : Display Name
- Remote Party ID - Calling Party : User Part
- Remote Party ID - Calling Party : Host Part
- P-Asserted Identity : Display Name
- P-Asserted Identity : User Part
- P-Asserted Identity : Host Part
- P-Preferred Identity : Display Name
- P-Preferred Identity : User Part
- P-Preferred Identity : Host Part
- P-Called-Party-ID : Display Name
- P-Called-Party-ID : User Part
- P-Called-Party-ID : Host Part
- Privacy Types Supported
Biến
Các biến được mô tả ngắn gọn dưới đây có thể được gán cho từng Trường SIP được đề cập trong phần Configurable SIP Fields (Các trường SIP có thể cấu hình).
- AuthID: Giá trị của biến AuthID được lấy từ trường Authentication ID nằm trong Call Manager > Trunks > Edit Register Based Trunk > Client Verification tab > Authentication Name (SIP User ID). Biến này chỉ áp dụng cho Register-Based Trunks và Accept Register-Based Trunks.

- CalledNum: Biến CalledNum chứa số được quay/số đích mà tin nhắn INVITE dự định khởi tạo cuộc gọi.
- CallerNum: Biến này đề cập đến phần người dùng của tiêu đề SIP To.
- CallerDispName: Khi một người dùng máy nhánh đã đăng ký với SkyX PBX thực hiện cuộc gọi đến một số bên ngoài, và một giá trị được cung cấp trong trường From: Display Name, SkyX PBX cố gắng giữ nguyên giá trị này trong tin nhắn INVITE được gửi đến SIP trunk. Nếu điểm cuối không sử dụng display name, SkyX PBX sẽ mặc định sử dụng tên máy nhánh cho biến này.
- OriginatorCallerID: Biến OriginatorCallerID cố gắng giữ lại số của người gọi gốc, ngay cả khi số đó không bắt nguồn từ SkyX PBX. Nếu một người dùng máy nhánh đã đăng ký với SkyX PBX sử dụng mã quay số ẩn danh để thực hiện cuộc gọi đi, biến này sẽ được điền với giá trị
anonymous. - Anonymous: Khi PBX gửi cuộc gọi đến trunk, biến này sẽ được điền với giá trị
anonymous. - Custom Field: Việc chọn tùy chọn này làm biến sẽ cho phép bạn nhập giá trị theo cách thủ công.
- TrunkHostPort: Biến này là giá trị kết hợp của các trường Host Domain or IP hoặc IP và Port trong Trunks > Edit SIP Trunk > Server tab.
- OutHostPort: Biến này là giá trị kết hợp của các trường Outbound Proxy Server và Outbound Proxy Server Port trong Trunks > Edit SIP Trunk > Server tab.
- ContactUri: Giá trị biến "ContactUri" chứa IP và cổng mà một SIP Trunk nên liên hệ với SkyX PBX, thường được sử dụng để điền vào phần Contact : Host Part. Cổng luôn là cổng của truyền tải SkyX.
- OutboundCallerId
Trong một cuộc gọi đi, PBX kiểm tra Outbound Caller ID từ nhiều vị trí khác nhau, với ưu tiên được đặt cho một số trường nhất định. Ưu tiên cao nhất là trường Outbound Caller ID được đặt trong cài đặt máy nhánh.
Để cấu hình Outbound Caller ID, điều hướng đến Call Manager > Users > Edit User > Extension tab (Quản lý cuộc gọi > Người dùng > Chỉnh sửa người dùng > tab Máy nhánh), và trong phần Outbound Caller ID, bạn có thể đặt outbound caller ID cho người dùng.
Outbound caller ID phải nằm trong phạm vi DID pool của trunk, và số DID có thể bắt đầu bằng "+", "0", "00", hoặc "+00".

Như đã giải thích trong phần Nhóm người dùng, bạn có thể tạo một nhóm người dùng, thêm người dùng làm thành viên nhóm và gán số DID cho nhóm. Nếu một quy tắc đi được tạo bằng tùy chọn "Calls from user groups" và một thành viên nhóm không có outbound caller ID được gán, PBX sẽ tự động sử dụng outbound caller ID từ nhóm người dùng khi thành viên đó thực hiện cuộc gọi đi.
Nếu cả outbound caller ID của người dùng và outbound caller ID của nhóm đều trống, hoặc nếu quy tắc đi không có outbound caller ID được đặt nhưng chỉ định một nhóm người dùng có outbound caller ID, PBX sẽ mặc định sử dụng cài đặt outbound caller ID của công ty. Để cấu hình outbound caller ID toàn công ty, đi tới Company > Outbound Caller ID (Công ty > ID người gọi đi) trong menu.
Ưu tiên ID người gọi đi
Khi thực hiện cuộc gọi đi thông qua một SIP trunk, PBX áp dụng ID người gọi đi theo thứ tự ưu tiên sau:
- ID người gọi đi do ứng dụng chỉ định: Nếu người dùng thực hiện cuộc gọi từ ứng dụng SkyX ONE và chỉ định một ID người gọi đi, PBX sẽ sử dụng ID người gọi đó bằng mọi cách.
- ID người gọi đi của máy nhánh người gọi: Nếu máy nhánh của người gọi có một ID người gọi đi được đặt, PBX sẽ sử dụng ID này để ghi đè tiêu đề FROM.
- ID người gọi đi của Quy tắc đi: Nếu ID người gọi đi của máy nhánh người gọi không được đặt, PBX sẽ sử dụng ID người gọi đi được cấu hình trong quy tắc đi để ghi đè tiêu đề FROM.
- ID người gọi đi của Nhóm người dùng: Nếu quy tắc đi không có ID người gọi đi được đặt nhưng chỉ định một nhóm người dùng có ID người gọi đi, PBX sẽ sử dụng ID người gọi đi của nhóm để ghi đè tiêu đề FROM.
- ID người gọi đi của Công ty: Nếu không có ID nào ở trên được cấu hình, PBX sẽ mặc định sử dụng ID người gọi đi của công ty để ghi đè tiêu đề FROM.
ID người gọi đi cho các dịch vụ PBX
Bạn có thể cấu hình ID người gọi đi cho các dịch vụ hệ thống như Lễ tân ảo, Hàng đợi cuộc gọi, Nhóm đổ chuông và các tính năng Cuộc họp trong SkyX PBX.
Khi các cuộc gọi từ hàng đợi cuộc gọi, nhóm đổ chuông hoặc lễ tân ảo không được trả lời, thất bại hoặc hết thời gian và được định tuyến lại đến trunk, hoặc khi một cuộc họp mời một số bên ngoài tham gia qua trunk, ID người gọi đi sẽ được lấy từ cài đặt ID người gọi đi của dịch vụ tương ứng. Nếu không có ID người gọi đi cụ thể nào được cấu hình cho các dịch vụ này, hệ thống sẽ mặc định sử dụng ID người gọi đi của công ty.
Điều chỉnh Tham số Trunk để áp dụng ID người gọi đi
Tham khảo ảnh chụp màn hình bên dưới để điều chỉnh các tham số đi của trunk và áp dụng ID người gọi đi cho các cuộc gọi đi.

Bỏ qua cài đặt ID người gọi đi
SkyX PBX cho phép bạn bỏ qua các cài đặt ID người gọi đi mặc định bằng cách cho phép thiết bị của người gọi chỉ định ID người gọi đi thông qua một tiêu đề SIP tùy chỉnh trong tin nhắn INVITE. Bằng cách thêm tiêu đề SIP X-Outbound-Cli, PBX có thể sửa đổi tin nhắn INVITE trước khi gửi nó đến trunk. Cách thức hoạt động như sau:
X-Outbound-Cli: rewrite-from=123Tiêu đề này ghi lại tên người dùng trong tiêu đề From thành 123 trước khi PBX gửi INVITE đến trunk.X-Outbound-Cli: rewrite-pai=456Tiêu đề này thêm một tiêu đề SIPP-Asserted-Identity, đặt tên người dùng thành 456 trước khi chuyển tiếp INVITE đến trunk.X-Outbound-Cli: rewrite-rpi=789Tiêu đề này thêm một tiêu đề SIPRemote-Party-ID, đặt tên người dùng thành 789 khi INVITE được gửi đến trunk.
Để áp dụng các thay đổi này cho một trunk cụ thể, bạn có thể bao gồm ID trunk trong tiêu đề:
X-Outbound-Cli: rewrite-from=123; trunk-id=235468356Điều này đảm bảo rằng PBX ghi lại tiêu đề From chỉ khi cuộc gọi được định tuyến qua trunk có ID 235468356.X-Outbound-Cli: rewrite-from=123; rewrite-rpi=789; rewrite-pai=456; trunk-id=235468356Với tiêu đề này, PBX sẽ ghi lại các tiêu đề From, Remote-Party-ID và P-Asserted-Identity cho trunk được chỉ định. Nếu không cótrunk-idnào được chỉ định, PBX sẽ áp dụng các thay đổi này cho bất kỳ trunk nào mà cuộc gọi được định tuyến qua.
ℹ️ Lưu ý: Khi sử dụng tiêu đề "X-Outbound-Cli" để bỏ qua các cài đặt ID người gọi đi của PBX, ID người gọi đi được chỉ định phải nằm trong phạm vi DID Pool của trunk được gán cho người thuê.
Xóa tiêu đề SIP
SkyX PBX hỗ trợ cho phép bạn xóa các tiêu đề SIP sau khi gửi tin nhắn SIP đến SIP trunk:
- P-Asserted-Identity
- P-Preferred-Identity
P-Called-Party-ID Chỉ cần thiết lập các tiêu đề SIP như trong ảnh chụp màn hình sau và các tiêu đề sẽ bị xóa.

Các loại quyền riêng tư được hỗ trợ
SkyX PBX hỗ trợ các loại Quyền riêng tư sau:
- user: chức năng quyền riêng tư cấp người dùng được cung cấp. Bất kỳ tiêu đề thông tin không cần thiết nào đều bị loại bỏ, bao gồm Subject, Call-Info, Organization, User-Agent, Reply-To, và In-Reply-To. Có thể giá trị gốc của tiêu đề From được thay đổi thành
anonymous. - header: các tiêu đề không thể được người dùng đặt tùy ý (Contact/Via) được sửa đổi. Không có tiêu đề không cần thiết nào có thể tiết lộ thông tin cá nhân về người khởi tạo yêu cầu được thêm vào. (Các giá trị được sửa đổi phải có thể khôi phục được khi các tin nhắn tiếp theo trong hội thoại cần được định tuyến đến người khởi tạo.)
- id: danh tính được bên thứ ba xác nhận được giữ riêng tư đối với các thực thể SIP bên ngoài miền tin cậy mà người dùng đã xác thực.