0

任何人都可以帮助我解决这个 kamailio 问题,我使用 kamailio 作为代理和路由器,PSTN 路由工作正常,但是响应 200OK 的 ACK 有问题,kamailio 没有转发。

在客户端的 SIP 流下方。

                             Messages  Retrans   Timeout   Unexpected-Msg
  INVITE ---------->         1         0
     100 <----------         1         0         0         0
     183 <----------         0         0         0         0
     180 <----------  E-RTD1 1         0         0         0
     200 <----------  E-RTD1 1         1         0         0
     ACK ---------->         1         1
   Pause [   3000ms]         1                             0
     BYE ---------->         1         0         0
     200 <----------         0         0         0         1

在 200 OK 之后,我收到了来自 kamailio 的 404“不在此处”。这是我的 cfg .. 不知道如何解决这个问题,因为我是 kamailio 工具的新手。

# Handle requests within SIP dialogs
route[WITHINDLG] {
    if (!has_totag()) return;

    # sequential request withing a dialog should
    # take the path determined by record-routing
    if (loose_route()) {
        route(DLGURI);
        if (is_method("BYE")) {
            setflag(FLT_ACC); # do accounting ...
            setflag(FLT_ACCFAILED); # ... even if the transaction fails
        } else if ( is_method("ACK") ) {
            # ACK is forwarded statelessly
            route(NATMANAGE);
        } else if ( is_method("NOTIFY") ) {
            # Add Record-Route for in-dialog NOTIFY as per RFC 6665.
            record_route();
        }
        route(RELAY);
        exit;
    }

    if (is_method("SUBSCRIBE") && uri == myself) {
        # in-dialog subscribe requests
        route(PRESENCE);
        exit;
    }
    if ( is_method("ACK") ) {
        if ( t_check_trans() ) {
            # no loose-route, but stateful ACK;
            # must be an ACK after a 487
            # or e.g. 404 from upstream server
            route(RELAY);
            exit;
        } else {
           
            # ACK without matching transaction ... ignore and discard
            exit;
        }
    }
    sl_send_reply("404","Not here");
    exit;
}

请帮助..提前谢谢。

4

1 回答 1

0

通过添加以下解决它//

     if (is_method("ACK|BYE")) {
             $duri= $ruri;
             t_relay();
             exit;
     }
于 2020-09-25T05:12:00.063 回答