Tôi đã bật Ejabberd và chạy với người dùng thử nghiệm và hoạt động tốt. Tôi muốn viết một module có thể đánh chặn các thông điệp và thay đổi chúng, như sau:Cách lọc thư trong Ejabberd
- đánh chặn "thông điệp"
- gửi chúng vào một tập tin php
- nhận được kết quả từ các tập tin php cùng (ngay lập tức)
- Sửa đổi các đoạn thơ tin nhắn và gửi nó xuống dây cho người nhận
các tài liệu ejabberd là yếu và hướng dẫn là không tồn tại. Bạn có thể cho tôi một số mã mẫu thực hiện điều này không. Sau đó tôi có thể tìm cách cấu hình nó cho các nhu cầu của mình.
Cảm ơn một gói!
Adil
Cảm ơn gleber. Tôi đã đi xa này và tôi có thể nhìn thấy từ? INFO_MSG mà packet_interceptor của tôi đang được gọi. Làm cách nào để gửi dữ liệu XML này tới php (thông qua? Xml =) và truy xuất XML kết quả và sau đó chuyển nó tới người nhận? –
Adil
Có lẽ bạn nên sử dụng http: request/1,2,3 để gọi tập lệnh PHP của mình. IIRC on_filter_packet sẽ được gọi trong cùng một quá trình như quá trình định tuyến ejabberd, vì vậy bạn không nên làm bất cứ điều gì quá tốn thời gian ở đó. Vì vậy, một giải pháp là để sinh ra một quy trình mới cho điều này, trả về một nguyên tử 'drop' (để thả gói tin) và khi stanza đã sửa đổi được trả về từ PHP, hãy gửi nó cùng với' ejabberd_router: route (From, To, Packet) '. Có lẽ on_filter_packet sẽ được gọi lại trên gói mới bạn đã gửi, vì vậy hãy đảm bảo phát hiện và không xử lý nó hai lần. – gleber
Để phát hiện gói, bạn có thể thêm thẻ ' ' vào một gói với 'xmlns' của riêng bạn. –
gleber