Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
configuration:telephone-on-serial [2017/10/23 10:13]
fachet [Router License Generator]
configuration:telephone-on-serial [2021/11/15 17:48] (current)
schmitt
Line 9: Line 9:
 The voice gateway function must have a license in order to use it. Unter the „SYSTEM“ sub-item „Licensing“ you can see your existing licenses. The voice gateway function must have a license in order to use it. Unter the „SYSTEM“ sub-item „Licensing“ you can see your existing licenses.
  
-{{:​configuration:​licensing_1.png?​direct&​900|}}+{{:​configuration:​license_ueberblick.png?​direct&​900|}}
  
  
Line 22: Line 22:
 The „Upload license file“ option allows you to select the created key. Important is the name of the filekey is equal to the serial of the router. With the button „install“ the license is integrated into the router. Now the sub-point „Voice Gateway“ must be present in the „SERVICES“ tab. The „Upload license file“ option allows you to select the created key. Important is the name of the filekey is equal to the serial of the router. With the button „install“ the license is integrated into the router. Now the sub-point „Voice Gateway“ must be present in the „SERVICES“ tab.
  
-{{:​configuration:​gateway_6.png?​direct&​900|}}+{{:​configuration:​sdk_administration.png?​direct&​900|}}
  
 ===== Voice Gateway ===== ===== Voice Gateway =====
Line 28: Line 28:
 Under the tab „Administration“,​ the admin is released and the SDK is selected under the option „Call Routing“. Now the button „Apply““ can be pressed. Under the tab „Administration“,​ the admin is released and the SDK is selected under the option „Call Routing“. Now the button „Apply““ can be pressed.
  
-{{:​configuration:​admin_7.png?​direct&​900|}}+{{:​configuration:​voicegateway_administration.png?​direct&​900|}}
  
 Under the „Endpoints“ tab, select „Voice-over-Mobile“ under „Option Type“. Then the button „Apply“ can be pressed again. ​ Under the „Endpoints“ tab, select „Voice-over-Mobile“ under „Option Type“. Then the button „Apply“ can be pressed again. ​
  
-{{:​configuration:​voice-over_8.png?​direct&​900|}}+{{:​configuration:​voice_gateway_endpunkt.png?​direct&​900|}}
  
 The SDK option must be selected under the „INTERFACES“ tab to ensure that the output generated by the SDK can be output on the serial. The SDK option must be selected under the „INTERFACES“ tab to ensure that the output generated by the SDK can be output on the serial.
  
-{{:​configuration:​interfaces_9.png?​direct&​900|}}+{{:​configuration:​seriell_admin.png?​direct&​900|}}
  
 ===== Create a new SDK job  ===== ===== Create a new SDK job  =====
Line 42: Line 42:
 For this, we create a new job under the „SERVICES“ tab in the SDK sub-section of the „Job Management“. Under the „Scripts“ option , we must first assign a name. Under the option „Action“ we can insert the script file via the „upload“. We can confirm this with the „Apply“ button. For this, we create a new job under the „SERVICES“ tab in the SDK sub-section of the „Job Management“. Under the „Scripts“ option , we must first assign a name. Under the option „Action“ we can insert the script file via the „upload“. We can confirm this with the „Apply“ button.
  
-{{:​configuration:​sdk_10.png?​direct&​900|}}+{{:​configuration:​jobmanagement_skripts.png?​direct&​900|}}
  
 Next, we need to set the trigger for the script under the „Triggers“ option. Here again a name must be assigned for the function. Under the Type option, „event-based“ is selected. The function „system-startup“ is used as an event. Next, we need to set the trigger for the script under the „Triggers“ option. Here again a name must be assigned for the function. Under the Type option, „event-based“ is selected. The function „system-startup“ is used as an event.
  
-{{:​configuration:​trigger_11.png?​direct&​900|}}+{{:​configuration:​jobmanagement_triggers.png?​direct&​900|}}
  
 As a now option, the job can now be set up. Again, we needed a name. The name for „Trigger“ and „Script“ are the ones we have set up before. As a now option, the job can now be set up. Again, we needed a name. The name for „Trigger“ and „Script“ are the ones we have set up before.
  
-{{:​configuration:​job_12.png?​direct&​900|}}+{{:​configuration:​jobmanagement_jobs.png?​direct&​900|}}
  
  
Line 73: Line 73:
 The SDK script „serial-write.are“ us extended for output of the call number on the serial interface. The SDK script „serial-write.are“ us extended for output of the call number on the serial interface.
  
-<code - phone_number_on_serial_port.ads   >+<code - serial-write.are   >
  
  
-/* DESC: This script can be used to write a message ​to the serial port. +/* DESC: This script can be used to write calling phone numbers ​  
- * Copyright (C) 2017 NetModule AG, Switzerland+ * CR/LF terminated ​to the serial port. 
 + * 
 + * Copyright (C) 2017 NetModule AG, Switzerland ​(arg)
  */  */
  
-void usage() +DEV = "​SERIAL1";​ 
-+ 
-    ​printf("usage: phone number on serial port.are <​msg>​\n"); +/* open serial port  */ 
-    exit(1);+fd = nb_serial_open(DEV); 
 +if (fd < 0) 
 +  ​nb_syslog("Unable to open %s", DEV); 
 +  exit(2);
 } }
  
-if (argc < 1) { +ret = nb_serial_setattr(DEV, 115200, 8, 1, 0, 0); 
-    usage();+if (ret != 0) { 
 +  ​nb_syslog("​Could not set serial attributes on %s return code %i", DEV, ret); 
 +  exit(3);
 } }
  
-DEV = "​SERIAL1";​ 
  
-while(true) +while (true) ​{ 
-{+  msg = nb_voice_event(1).call.calling;​ //​ check event with 1sec timeout 
 +  if (!is_void(msg)) ​{ 
 +    msg = left(msg, strlen(msg) - 5); // trim phone number 
 +    msg = right(msg, strlen(msg) - 6); 
 +    msg = strcat(msg, "​\r\n"​);​ 
 +    len = strlen(msg);​
  
- MSG = nb_voice_event(1).call.calling;​ +    if (write(fd, ​msglen!= len) { 
- + nb_syslog("Error on writing ​%d bytes to %s", ​len, DEV); 
- if ( !is_void(MSG)) + close(fd); 
- { + exit(4); 
- +    } 
- MSG = left(MSG,​strlen(MSG)-5);​ +  }
- MSG = right(MSG,​strlen(MSG)-6);​ +
- +
- /* check serial port config */ +
- st = nb_config_get("​serial.0.status"​);​ +
- if (st != "​2"​) { +
-    printf("​Serial port is not enabled for us\n"​);​ +
-    exit(1); +
- } +
- +
- ret = nb_serial_setattr(DEV,​ 115200, 8, 1, 0, 0); +
- if (ret != 0) { +
-     ​printf("​Could not set serial attributes: %i \n",​ret);​ +
-     ​exit(1);​ +
- } +
- +
- fd = nb_serial_open(DEV);​ +
- if (fd < 0) { +
-     ​printf("​Unable to open %s\n", DEV); +
-     ​exit(1);​ +
- } +
- +
- ​message = strcat(MSG, "​\r\n"​);​ +
- ret = write(fd, ​messagestrlen(message)); +
- if (ret> 0) { +
-     printf("Wrote %d bytes to %s\n", ​ret, DEV); +
- } else { +
-     ​printf("​Unable to write to %s\n", DEV); +
- +
- close(fd); +
- +
- }+
 } }
- +/* not reached */
-exit(0); +
 </​code>​ </​code>​
  
-The SDK command „nb_voice_event“ makes it possible to query the status of the voice call. At the address of the router  ​http://192.168.1.1/admin/sdk-api-functions.php#​sec2.15 can get further information ​of the command.+The SDK command „nb_voice_event“ makes it possible to query the status of the voice call. For more information about the SDK-API, see please to the Weblink ​http://wiki.netmodule.com/documentation/start under the item Products under one of the router'​s model you have.
  
-With a loop and the SDK command, you get when a voice call comes in. +You can use the test window to see when a voice call comes in.
- +
-<code - voice_evenet.ads > +
- +
- while(true) +
-+
- dump(nb_voice_event(10));​ +
- }+
  
 +<​code>​
 +dump(nb_voice_event(10));​ // wait 10secs for call
 </​code>​ </​code>​
  
Line 154: Line 127:
  
 <​code>​ <​code>​
- 
-void 
- 
 struct(2): { struct(2): {
   .call = struct(4): {   .call = struct(4): {
Line 173: Line 143:
             .state = string[6]: "​hungup"​             .state = string[6]: "​hungup"​
           }           }
-  .type = string[6]: "​hungup"​ 
 } }