2011-10-14 37 views
7

Tôi hiện đang cố gắng tìm ra cách các lớp sms được trình bày chính xác trong SMPP. Tuy nhiên tôi bây giờ hoàn toàn bối rối bởi tiêu chuẩn và đó là tài liệu.Cách thể hiện chính xác lớp thông báo trong SMPP

Trong sms bình thường chúng ta có

  • Class0: Flash sms, được hiển thị trên màn hình
  • Class1: Bình thường Sms được lưu trữ trên sim hoặc nội bộ trong thiết bị

Nhìn vào thông số SMPP, đầu tiên tôi tìm thông số data_coding trong hoạt động submit_sm, được sử dụng để đặt DCS được gửi qua MAP. Theo như tôi hiểu điều này, nếu chúng ta muốn thiết lập rõ ràng lớp thông báo, chúng ta cần thiết lập bốn bit đầu tiên của tham số này cho một tham số, sau đó hai bit chỉ ra mã hóa và sau đó hai bit khác chỉ ra lớp thông báo. Vì vậy, đối với Class1 Sms, chúng tôi sẽ đặt 1111xx01. Điều này có đúng không?

Nếu chúng tôi cố gắng đặt DCS này, tuy nhiên hiện tại chúng tôi cũng đặt mã hóa dữ liệu thành "dữ liệu 8 bit". Có vẻ như, một số điện thoại không thể hiểu được điều này. Điều này có được chỉ định ở bất kỳ đâu không, và chúng ta có thể thay đổi điều này hay là một mã hóa đặc biệt cần thiết khi gửi các lớp thông báo khác.

Sự nhầm lẫn khác nảy sinh, khi chúng tôi cố gắng sử dụng SMPPv3.4 đề xuất cách thiết lập lớp Thông báo. Kể từ 3.4 có một tham số tùy chọn trong hoạt động submit_sm, được gọi là dest_addr_subunit. Theo tiêu chuẩn, tham số này phải được đặt thành 0 cho không xác định, 1 cho MS-Display, 2 cho thiết bị di động, v.v. Nếu tôi xem xét điều này, có vẻ như các thông số được chuyển bởi một tham số so với các lớp thông báo GSM. Class0 được mã hóa thành 1, Class1 được mã hóa thành 2 và cứ tiếp tục như vậy. Đây có phải là chính xác hoặc là có bất kỳ bản đồ phức tạp hơn đằng sau này?

Ngoài ra, nếu chúng tôi đặt dest_addr_subunit, chúng tôi vẫn phải đặt DCS là tốt hay chúng tôi có thể chỉ để tham số này ở giá trị mặc định của nó?

Trả lời

9

Tôi khuyên bạn nên đọc thông số 3GPP TS 23.038 với mô tả DCS (Mô tả mã hóa dữ liệu) chi tiết.

Trong trường hợp các bit DCS 7654 là 00xx, bạn nên kiểm tra DCS cho giá trị bit 4.

  • chút 4 == 0 - không có lớp thông báo cho tin nhắn này (bit 1 và 0 được dành riêng)
  • chút 4 == 1 - bit 1 và 0 chứa lớp thông báo

Vì vậy, bạn nên đặt thông số data_coding SMPP theo thông số 3GPP TS 23.038 để xử lý đúng message_class.

By nhắn GSM SMS mặc định không có message_class và điều này là không giống như message_class = 1.

+0

Vì vậy, nếu tôi hiểu tài liệu này một cách chính xác sự nhầm lẫn chính xuất phát từ thực tế là các lớp thông báo đều có thể được chỉ định bởi các lược đồ '1111xxyy' trong đó' xx' là mã hóa và 'yy' là lớp thông báo hoặc theo sơ đồ' 00c10xyy' trong đó 'c' cho biết nén' x' biểu thị mã hóa và 'yy' biểu thị lớp thông báo. Điều làm tôi bối rối ở đây, đó là cả hai phương pháp đều hoàn toàn giống nhau, và một phương pháp dường như không hoạt động với tất cả các thiết bị trong trường hợp của chúng tôi. – LiKao

+0

Thông thường tôi sử dụng biểu diễn sau đây: '' 0001ccmm'' trong đó '' cc'' là mã hóa ('' 00'' cho GSM mặc định) và '' mm'' message_class'' đại diện ('' 00'' cho flash SMS) vì vậy ví dụ sẽ là '' 00010000'' cho SMS 7bit flash. Tùy chọn '' 11110cmm'' là có thể nhưng tôi chưa bao giờ thấy cái này được sử dụng trong thực tế. –

+0

Tôi đã thử nghiệm '0001cc00' và nó không hoạt động đối với tin nhắn lớp 0 (thông báo "flash") trên Android; '1111cc00' hoạt động như mong đợi. –

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