[SR-Users] unsupported route_type 64

Alexandru Covalschi 568691 at gmail.com
Sun Aug 30 16:32:06 CEST 2015


Can you log the output you receive in "route..." In evapi message received?

суббота, 29 августа 2015 г. пользователь Admin написал:

> Thank you for responding to my post. Here it is.
>
> include_file "kamailio-cgrates.cfg"
>
> request_route {
>
> ...
>
> switch ($fU) {
>         case 1001:
>         case 1006:
>                 $dlg_var(cgrReqType) = "*prepaid";
>                 break;
>         case 1002:
>                 $dlg_var(cgrReqType) = "*postpaid";
>                 break;
>         case 1003:
>                 $dlg_var(cgrReqType) = "*pseudoprepaid";
>                 break;
>         default:
>                 $dlg_var(cgrReqType) = "*rated";
>         }
>         $dlg_var(cgrTenant) = "cgrates.org";
>         $dlg_var(cgrAccount) = $fU;
>         $dlg_var(cgrDestination) = $rU;
>         route(CGRATES_AUTH_REQUEST); # Will be  answered in
> CGRATES_AUTH_REPLY
>         #route(CGRATES_LCR_REQUEST);
>         exit;
> }
>
> # Here will land requests after processing them with CGRateS.
> # Call RELAY or other routes following this route
> route[CGRATES_AUTH_REPLY] {
>         if $var(CgrError) != "" {
>                 xlog("CGR_AUTH_ERROR: $var(CgrError)");
>                 sl_send_reply("503","CGR_ERROR");
>                 exit;
>         }
>         if $var(CgrMaxSessionTime) != -1 {
>                 if $var(CgrMaxSessionTime) == 0 { // Not enough balance,
> do not allow
> the call to go through
>                         sl_send_reply("403","Insufficient credit");
>                         exit;
>                 } else if !dlg_set_timeout("$var(CgrMaxSessionTime)") {
>                         sl_send_reply("503","CGR_MAX_SESSION_TIME_ERROR");
>                         exit;
>                 }
>         }
>         if $var(CgrSuppliers) != "" { # Enforce the supplier variable to
> the
> first one received from CGRateS
>                 $dlg_var(cgrSupplier) = $(var(CgrSuppliers){s.select,0,,});
>         }
>         route(RELAY);
> }
>
> ====================================================================
>
> # kamailio-cgrates.cfg
>
> # Kamailio-CGRateS related route blocks
>
> # Called on new connection over evapi, should normally be the case of
> CGRateS engine
> event_route[evapi:connection-new] {
>     $sht(cgrconn=>cgr) = $evapi(srcaddr) + ":" + $evapi(srcport); #
> Detect presence of at least one connection
> }
>
> # Called when the connection with CGRateS closes
> event_route[evapi:connection-closed] {
>         $var(connClosed) = $evapi(srcaddr) + ":" + $evapi(srcport);
>         if $sht(cgrconn=>cgr) == $var(connClosed) {
>                 $sht(cgrconn=>cgr) = $null;
>         }
> }
>
> # Message received from CGRateS, dispatch it to own route
> event_route[evapi:message-received] {
>         json_get_field("$evapi(msg)", "Event", "$var(Event)");
>         route($(var(Event){s.rm,"})); # String characters are kept by
> json_get_field, remove them here
> }
>
> # Called by Kamailio on new dialog
> event_route[dialog:start] {
>         route(CGR_CALL_START);
> }
>
> # Called by Kamailio on dialog end
> event_route[dialog:end] {
>         route(CGR_CALL_END);
> }
>
> # Called by Kamailio on local disconnect
> event_route[tm:local-request] {
>         route(CGR_CALL_END);
> }
>
>
> # Send AUTH_REQUEST to CGRateS
> route[CGRATES_AUTH_REQUEST] {
>         # Auth INVITEs with CGRateS
>         if $sht(cgrconn=>cgr) == $null {
>                 sl_send_reply("503","Charging controller unreachable");
>                 exit;
>         }
>         evapi_async_relay("{\"event\":\"CGR_AUTH_REQUEST\",
>                 \"tr_index\":\"$T(id_index)\",
>                 \"tr_label\":\"$T(id_label)\",
>                 \"cgr_reqtype\":\"$dlg_var(cgrReqType)\",
>                 \"cgr_tenant\":\"$dlg_var(cgrTenant)\",
>                 \"cgr_account\":\"$dlg_var(cgrAccount)\",
>                 \"cgr_destination\":\"$dlg_var(cgrDestination)\",
>                 \"cgr_setuptime\":\"$TS\",
>                 \"cgr_computelcr\":\"true\"}");
> }
>
> # Process AUTH_REPLY from CGRateS
> route[CGR_AUTH_REPLY] {
>         json_get_field("$evapi(msg)", "TransactionIndex",
> "$var(TransactionIndex)");
>         json_get_field("$evapi(msg)", "TransactionLabel",
> "$var(TransactionLabel)");
>         json_get_field("$evapi(msg)", "MaxSessionTime",
> "$var(MaxSessionTime)");
>         json_get_field("$evapi(msg)", "Suppliers", "$var(Suppliers)");
>         json_get_field("$evapi(msg)", "Error", "$var(Error)");
>         $var(id_index) = $(var(TransactionIndex){s.int});
>         $var(id_label) = $(var(TransactionLabel){s.int});
>         $var(CgrMaxSessionTime) = $(var(MaxSessionTime){s.int});
>         $var(CgrSuppliers) = $(var(Suppliers){s.rm,"});
>         $var(CgrError) = $(var(Error){s.rm,"});
>         t_continue("$var(id_index)", "$var(id_label)",
> "CGRATES_AUTH_REPLY"); #
> Unpark the transaction
> }
>
> # Send AUTH_REQUEST to CGRateS
> route[CGRATES_LCR_REQUEST] {
>         # Auth INVITEs with CGRateS
>         if $sht(cgrconn=>cgr) == $null {
>                 sl_send_reply("503","Charging controller unreachable");
>                 exit;
>         }
>         evapi_async_relay("{\"event\":\"CGR_LCR_REQUEST\",
>                 \"tr_index\":\"$T(id_index)\",
>                 \"tr_label\":\"$T(id_label)\",
>                 \"cgr_tenant\":\"$dlg_var(cgrTenant)\",
>                 \"cgr_account\":\"$dlg_var(cgrAccount)\",
>                 \"cgr_destination\":\"$dlg_var(cgrDestination)\",
>                 \"cgr_setuptime\":\"$TS\"}");
> }
>
> # Process LCR_REPLY from CGRateS
> route[CGR_LCR_REPLY] {
>         json_get_field("$evapi(msg)", "TransactionIndex",
> "$var(TransactionIndex)");
>         json_get_field("$evapi(msg)", "TransactionLabel",
> "$var(TransactionLabel)");
>         json_get_field("$evapi(msg)", "MaxSessionTime",
> "$var(MaxSessionTime)");
>         json_get_field("$evapi(msg)", "Suppliers", "$var(Suppliers)");
>         json_get_field("$evapi(msg)", "Error", "$var(Error)");
>         $var(id_index) = $(var(TransactionIndex){s.int});
>         $var(id_label) = $(var(TransactionLabel){s.int});
>         $var(CgrMaxSessionTime) = $(var(MaxSessionTime){s.int});
>         $var(CgrSuppliers) = $(var(Suppliers){s.rm,"});
>         $var(CgrError) = $(var(Error){s.rm,"});
>         t_continue("$var(id_index)", "$var(id_label)",
> "CGRATES_AUTH_REPLY"); #
> Unpark the transaction
> }
>
> # CGRateS request for session disconnect
> route[CGR_SESSION_DISCONNECT] {
>         json_get_field("$evapi(msg)", "HashEntry", "$var(HashEntry)");
>         json_get_field("$evapi(msg)", "HashId", "$var(HashId)");
>         json_get_field("$evapi(msg)", "Reason", "$var(Reason)");
>         jsonrpc_exec('{"jsonrpc":"2.0","id":1,
> "method":"dlg.end_dlg","params":[$(var(HashEntry){s.rm,"}),
> $(var(HashId){s.rm,"})]}');
>         #$jsonrpl($var(reply));
> }
>
> # Inform CGRateS about CALL_START (start prepaid sessions loops)
> route[CGR_CALL_START] {
>         if $sht(cgrconn=>cgr) == $null {
>                 xlog("Charging controller unreachable");
>                 exit;
>         }
>         evapi_async_relay("{\"event\":\"CGR_CALL_START\",
>                 \"callid\":\"$dlg(callid)\",
>                 \"from_tag\":\"$dlg(from_tag)\",
>                 \"h_entry\":\"$dlg(h_entry)\",
>                 \"h_id\":\"$dlg(h_id)\",
>                 \"cgr_reqtype\":\"$dlg_var(cgrReqType)\",
>                 \"cgr_tenant\":\"$dlg_var(cgrTenant)\",
>                 \"cgr_account\":\"$dlg_var(cgrAccount)\",
>                 \"cgr_destination\":\"$dlg_var(cgrDestination)\",
>                 \"cgr_answertime\":\"$TS\",
>                 \"cgr_supplier\":\"$dlg_var(cgrSupplier)\"}");
> }
>
> # Inform CGRateS about CALL_END (stop debit loops, perform accounting if
> desired in this way)
> route[CGR_CALL_END] {
>         if $sht(cgrconn=>cgr) == $null {
>                 xlog("Charging controller unreachable");
>                 exit;
>         }
>         $var(callDur) = $TS - $dlg(start_ts);
>         evapi_async_relay("{\"event\":\"CGR_CALL_END\",
>                 \"callid\":\"$dlg(callid)\",
>                 \"from_tag\":\"$dlg(from_tag)\",
>                 \"cgr_reqtype\":\"$dlg_var(cgrReqType)\",
>                 \"cgr_tenant\":\"$dlg_var(cgrTenant)\",
>                 \"cgr_account\":\"$dlg_var(cgrAccount)\",
>                 \"cgr_destination\":\"$dlg_var(cgrDestination)\",
>                 \"cgr_answertime\":\"$dlg(start_ts)\",
>                 \"cgr_duration\":\"$var(callDur)\",
>                 \"cgr_supplier\":\"$dlg_var(cgrSupplier)\",
>                 \"cgr_disconnectcause\":\"$T_reply_code\"}");
> }
>
>
> _______________________________________________
> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
> sr-users at lists.sip-router.org <javascript:;>
> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>


-- 
Alexandru Covalschi
ABRISS-Solutions
VoIP engineer and system administrator
phone: +37367398493
web: http://abs-telecom.com/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20150830/3b588b20/attachment.html>


More information about the sr-users mailing list