Deffinitely,
I have spent several weeks perfecting these phone configurations for the Cisco SPA514G, and beefing the system up with every feature that was even remotely needed just for fun because the client is family business.
Several phones are also programmed with the Cisco SPA500S add-on module for additional buttons.
Here is a list of the features we’ve got
Features
-
Hunt Group to direct incoming calls to logged in Agents, line key on
each phone to login/out
-
Night Mode with Auto Attendant Greeting, line key on each phone to
activate/deactivate
-
Company Directory, Personal Directory application within phone, Press
the dir softkey for Personal Directory, then press 3 for “Corp
Directory” to view the Corporate Directory extensions.
-
Company Directory with dial by name (Option 2 on the Night Mode Auto
Attendant)
-
Company Mailbox - (Option 0 on the Night Mode Auto Attendant, uses
Front Desk mailbox), messages can be checked from the Front Desk
phone Voicemail button or from any Customer Service phone by using
the Company VM line key. The mailbox is shared, so that if one
Customer Service rep deletes a voicemail, it is deleted on the others
phones. Also, message waiting indication (red light and envelope)
will appear on the Customer Service phones when a message is waiting
in the Company Mailbox
-
Transfer, Blind Transfer - use phone softkeys
-
Hold - Press the Hand icon, Music on Hold plays
-
Ad-hoc Conference (Use the Conference softkey)
-
MeetMe Conference Bridge: Dial 199. To transfer an external caller to
the bridge: While on the call, use the bxfer softkey then dial 199.
Call back to 199 to join yourself to the conference as well.
-
Voicemail to Email - see cutsheet for more info
-
Visual Voicemail application, use the Voicemail line key on each
phone
-
Wireless Phone Capability - with Cisco WBPN adapter
-
Softphone Capability as a cellphone app or PC app
-
Remote Office phones
-
Follow-Me: Rings a user’s office phone, home phone, and cell phone
softphone app simultaneously
I was able to upgrade firmware and configure all 25 phones automatically, not using the web GUIs of the phones, by making one XML configuration template, then making individual XML configs for each phone, and having the phones download the firmware and config automatically with DHCP option 150.
I also created one template extension in freepbx, then exported the extension using the Bulk Extensions tool, and then used that spreadsheet to create all the other extensions with similar settings, and reimported back into freepbx.
Working Cisco SPA514G config without SPA500S add-on module:
<flat-profile>
<XML_Directory_Service_Name ua="na">Corp Directory</XML_Directory_Service_Name>
<XML_Directory_Service_URL ua="na">http://10.1.1.10/directory/dir.xml</XML_Directory_Service_URL>
<Server_Type ua="na">Asterisk</Server_Type>
<!-- Line Key 2 -->
<Extension_2_ ua="na">Disabled</Extension_2_> <!-- options: 1/2/3/4/5/6/7/8/9/10/11/12/Disabled -->
<Short_Name_2_ ua="na">Voicemail</Short_Name_2_>
<Share_Call_Appearance_2_ ua="na">private</Share_Call_Appearance_2_> <!-- options: private/shared -->
<Extended_Function_2_ ua="na">fnc=xml;url=http://10.1.1.10/voicemail/voicemail.php?user=123</Extended_Function_2_>
<!-- Line Key 3 -->
<Extension_3_ ua="na">Disabled</Extension_3_> <!-- options: 1/2/3/4/5/6/7/8/9/10/11/12/Disabled -->
<Short_Name_3_ ua="na">Hunt Group</Short_Name_3_>
<Share_Call_Appearance_3_ ua="na">private</Share_Call_Appearance_3_> <!-- options: private/shared -->
<Extended_Function_3_ ua="na">fnc=sd+blf;sub=*45123*[email protected]</Extended_Function_3_>
<!-- Line Key 4 -->
<Extension_4_ ua="na">Disabled</Extension_4_> <!-- options: 1/2/3/4/5/6/7/8/9/10/11/12/Disabled -->
<Short_Name_4_ ua="na">Night Mode</Short_Name_4_>
<Share_Call_Appearance_4_ ua="na">private</Share_Call_Appearance_4_> <!-- options: private/shared -->
<Extended_Function_4_ ua="na">fnc=sd+blf;sub=*[email protected]</Extended_Function_4_>
<RTP_Packet_Size ua="na">0.020</RTP_Packet_Size>
<Programmable_Softkey_Enable ua="na">Yes</Programmable_Softkey_Enable>
<Idle_Key_List ua="na">em_login|1;acd_login|1;acd_logout|1;astate|2;avail|3;unavail|3;redial|5;dir|6;cfwd|7;dnd|8;pickup|10;gpickup|11;unpark|12;guestIn|13;guestOut|13;em_logout</Idle_Key_List>
<Missed_Call_Key_List ua="na">miss|4</Missed_Call_Key_List>
<Off_Hook_Key_List ua="na">redial|1;dir|2;cfwd|3</Off_Hook_Key_List>
<Dialing_Input_Key_List ua="na">dial|1;delchar|2;cancel|3;dir|4</Dialing_Input_Key_List>
<Progressing_Key_List ua="na">endcall|4</Progressing_Key_List>
<Connected_Key_List ua="na">xfer|1;bxfer|2;conf|3;endcall|4;toggle;confLx;xferLx;park;phold;flash;</Connected_Key_List>
<Start-Xfer_Key_List ua="na">hold|1;endcall|2;xfer|4;toggle;</Start-Xfer_Key_List>
<Start-Conf_Key_List ua="na">hold|1;endcall|2;conf|4;toggle;</Start-Conf_Key_List>
<Conferencing_Key_List ua="na">hold|1;endcall|2;join|4</Conferencing_Key_List>
<Releasing_Key_List ua="na">endcall|4;</Releasing_Key_List>
<Hold_Key_List ua="na">resume|1;endcall|2;newcall|3;redial;dir;cfwd;dnd</Hold_Key_List>
<Ringing_Key_List ua="na">answer|1;ignore|2;toggle|4</Ringing_Key_List>
<Shared_Active_Key_List ua="na">newcall|1;barge|2;cfwd|3;dnd|4</Shared_Active_Key_List>
<Shared_Held_Key_List ua="na">resume|1;barge|2;cfwd|3;dnd|4</Shared_Held_Key_List>
<PSK_1 ua="na"></PSK_1>
<PSK_2 ua="na"></PSK_2>
<PSK_3 ua="na"></PSK_3>
<PSK_4 ua="na"></PSK_4>
<PSK_5 ua="na"></PSK_5>
<PSK_6 ua="na"></PSK_6>
<PSK_7 ua="na"></PSK_7>
<PSK_8 ua="na"></PSK_8>
<PSK_9 ua="na"></PSK_9>
<PSK_10 ua="na"></PSK_10>
<PSK_11 ua="na"></PSK_11>
<PSK_12 ua="na"></PSK_12>
<PSK_13 ua="na"></PSK_13>
<PSK_14 ua="na"></PSK_14>
<PSK_15 ua="na"></PSK_15>
<PSK_16 ua="na"></PSK_16>
<Line_Navigation ua="na">Per Call</Line_Navigation>
<Admin_Passwd ua="na">Corproot-Secret</Admin_Passwd>
<Signaling_Protocol ua="na">SIP</Signaling_Protocol>
<Connection_Type ua="rw">Static IP</Connection_Type>
<!-- System Configuration -->
<Static_IP ua="rw">10.1.1.91</Static_IP>
<!-- System Configuration -->
<NetMask ua="rw">255.255.255.0</NetMask>
<Gateway ua="rw">10.1.1.1</Gateway>
<Primary_DNS ua="rw">10.1.1.1</Primary_DNS>
<Secondary_DNS ua="rw">4.2.2.2</Secondary_DNS>
<NTP_Enable ua="na">Yes</NTP_Enable>
<Primary_NTP_Server ua="na">us.pool.ntp.org</Primary_NTP_Server>
<Secondary_NTP_Server ua="na">pool.ntp.org</Secondary_NTP_Server>
<Provision_Enable ua="na">Yes</Provision_Enable>
<Resync_Periodic ua="na">3600</Resync_Periodic>
<Transport_Protocol ua="na">tftp</Transport_Protocol>
<Upgrade_Enable ua="na">Yes</Upgrade_Enable>
<Upgrade_Rule ua="na">( $SWVER ne 7.5.6 )? tftp://10.1.1.10/sw/spa51x-7-5-6.bin</Upgrade_Rule>
<Line_Enable_1_ ua="na">Yes</Line_Enable_1_>
<Proxy_1_ ua="na">10.1.1.10</Proxy_1_>
<Register_1_ ua="na">Yes</Register_1_>
<Make_Call_Without_Reg_1_ ua="na">No</Make_Call_Without_Reg_1_>
<Ans_Call_Without_Reg_1_ ua="na">No</Ans_Call_Without_Reg_1_>
<Line_Navigation ua="na">Per Call</Line_Navigation>
<!-- System Configuration -->
<Display_Name_1_ ua="na">W Conf RM</Display_Name_1_>
<User_ID_1_ ua="na">123</User_ID_1_>
<!-- System Configuration -->
<Password_1_ ua="na">Corproot-Secret</Password_1_>
<Use_Auth_ID_1_ ua="na">No</Use_Auth_ID_1_>
<Dial_Plan_1_ ua="na">(*xxxxx*xxx|7xxx|1xxS0|[3469]11S0|911S0|[2-9]xxxxxxxxxS0)</Dial_Plan_1_>
<Line_Enable_2_ ua="na">No</Line_Enable_2_>
<Line_Enable_3_ ua="na">No</Line_Enable_3_>
<Line_Enable_4_ ua="na">No</Line_Enable_4_>
<Log_Missed_Calls_for_EXT_1 ua="na">Yes</Log_Missed_Calls_for_EXT_1>
<Back_Light_Timer ua="na">Always On</Back_Light_Timer>
<!-- System Configuration -->
<Station_Name ua="na">W Conf RM</Station_Name>
<Station_Display_Name ua="na">W Conf RM</Station_Display_Name>
<!-- System Configuration -->
<Voice_Mail_Number ua="na">*97</Voice_Mail_Number>
<BMP_Picture_Download_URL ua="na"></BMP_Picture_Download_URL>
<Select_Logo ua="na"></Select_Logo>
<Select_Background_Picture ua="na"></Select_Background_Picture>
<Screen_Saver_Icon ua="rw"></Screen_Saver_Icon>
<Extension_1_ ua="na">1</Extension_1_>
<Extension_2_ ua="na">Disabled</Extension_2_>
<Extension_3_ ua="na">Disabled</Extension_3_>
<Extension_4_ ua="na">Disabled</Extension_4_>
<Softkey_Navigation_Style ua="na">More</Softkey_Navigation_Style>
<Call_Return_Code ua="na"></Call_Return_Code>
<Blind_Transfer_Code ua="na"></Blind_Transfer_Code>
<Call_Back_Act_Code ua="na"></Call_Back_Act_Code>
<Call_Back_Deact_Code ua="na"></Call_Back_Deact_Code>
<Cfwd_All_Act_Code ua="na"></Cfwd_All_Act_Code>
<Cfwd_All_Deact_Code ua="na"></Cfwd_All_Deact_Code>
<Cfwd_Busy_Act_Code ua="na"></Cfwd_Busy_Act_Code>
<Cfwd_Busy_Deact_Code ua="na"></Cfwd_Busy_Deact_Code>
<Cfwd_No_Ans_Act_Code ua="na"></Cfwd_No_Ans_Act_Code>
<Cfwd_No_Ans_Deact_Code ua="na"></Cfwd_No_Ans_Deact_Code>
<CW_Act_Code ua="na"></CW_Act_Code>
<CW_Deact_Code ua="na"></CW_Deact_Code>
<CW_Per_Call_Act_Code ua="na"></CW_Per_Call_Act_Code>
<CW_Per_Call_Deact_Code ua="na"></CW_Per_Call_Deact_Code>
<Block_CID_Act_Code ua="na"></Block_CID_Act_Code>
<Block_CID_Deact_Code ua="na"></Block_CID_Deact_Code>
<Block_CID_Per_Call_Act_Code ua="na"></Block_CID_Per_Call_Act_Code>
<Block_CID_Per_Call_Deact_Code ua="na"></Block_CID_Per_Call_Deact_Code>
<Block_ANC_Act_Code ua="na"></Block_ANC_Act_Code>
<Block_ANC_Deact_Code ua="na"></Block_ANC_Deact_Code>
<DND_Act_Code ua="na"></DND_Act_Code>
<DND_Deact_Code ua="na"></DND_Deact_Code>
<Secure_All_Call_Act_Code ua="na"></Secure_All_Call_Act_Code>
<Secure_No_Call_Act_Code ua="na"></Secure_No_Call_Act_Code>
<Secure_One_Call_Act_Code ua="na"></Secure_One_Call_Act_Code>
<Secure_One_Call_Deact_Code ua="na"></Secure_One_Call_Deact_Code>
<Paging_Code ua="na"></Paging_Code>
<Call_Park_Code ua="na"></Call_Park_Code>
<Call_Pickup_Code ua="na"></Call_Pickup_Code>
<Call_UnPark_Code ua="na"></Call_UnPark_Code>
<Group_Call_Pickup_Code ua="na"></Group_Call_Pickup_Code>
<Media_Loopback_Code ua="na"></Media_Loopback_Code>
<Referral_Services_Codes ua="na"></Referral_Services_Codes>
<Feature_Dial_Services_Codes ua="na"></Feature_Dial_Services_Codes>
<Service_Annc_Base_Number ua="na"></Service_Annc_Base_Number>
<Service_Annc_Extension_Codes ua="na"></Service_Annc_Extension_Codes>
<Prefer_G711u_Code ua="na"></Prefer_G711u_Code>
<Force_G711u_Code ua="na"></Force_G711u_Code>
<Prefer_G711a_Code ua="na"></Prefer_G711a_Code>
<Force_G711a_Code ua="na"></Force_G711a_Code>
<Prefer_G723_Code ua="na"></Prefer_G723_Code>
<Force_G723_Code ua="na"></Force_G723_Code>
<Prefer_G722_Code ua="na"></Prefer_G722_Code>
<Force_G722_Code ua="na"></Force_G722_Code>
<Prefer_L16_Code ua="na"></Prefer_L16_Code>
<Force_L16_Code ua="na"></Force_L16_Code>
<Prefer_AMR-WB_Code ua="na"></Prefer_AMR-WB_Code>
<Force_AMR-WB_Code ua="na"></Force_AMR-WB_Code>
<Prefer_G726r16_Code ua="na"></Prefer_G726r16_Code>
<Force_G726r16_Code ua="na"></Force_G726r16_Code>
<Prefer_G726r24_Code ua="na"></Prefer_G726r24_Code>
<Force_G726r24_Code ua="na"></Force_G726r24_Code>
<Prefer_G726r32_Code ua="na"></Prefer_G726r32_Code>
<Force_G726r32_Code ua="na"></Force_G726r32_Code>
<Prefer_G726r40_Code ua="na"></Prefer_G726r40_Code>
<Force_G726r40_Code ua="na"></Force_G726r40_Code>
<Prefer_G729a_Code ua="na"></Prefer_G729a_Code>
<Force_G729a_Code ua="na"></Force_G729a_Code>
<Time_Zone ua="na">GMT-06:00</Time_Zone>
<Daylight_Saving_Time_Rule ua="na">start=3/8/7/2:0:0;end=11/1/7/2:0:0;save=1</Daylight_Saving_Time_Rule>
<Daylight_Saving_Time_Enable ua="na">Yes</Daylight_Saving_Time_Enable>
<Locale ua="na">en-US</Locale>
<Unit_1_Enable ua="na">No</Unit_1_Enable>
<Unit_2_Enable ua="na">No</Unit_2_Enable>
</flat-profile>
Working SPA514G config with SPA500S add-on module:
<flat-profile>
<XML_Directory_Service_Name ua="na">Corp Directory</XML_Directory_Service_Name>
<XML_Directory_Service_URL ua="na">http://10.1.1.10/directory/dir.xml</XML_Directory_Service_URL>
<!-- Line Key 2 -->
<Extension_2_ ua="na">Disabled</Extension_2_> <!-- options: 1/2/3/4/5/6/7/8/9/10/11/12/Disabled -->
<Short_Name_2_ ua="na">Voicemail</Short_Name_2_>
<Share_Call_Appearance_2_ ua="na">private</Share_Call_Appearance_2_> <!-- options: private/shared -->
<Extended_Function_2_ ua="na">fnc=xml;url=http://10.1.1.10/voicemail/voicemail.php?user=101</Extended_Function_2_>
<!-- Line Key 3 -->
<Extension_3_ ua="na">Disabled</Extension_3_> <!-- options: 1/2/3/4/5/6/7/8/9/10/11/12/Disabled -->
<Short_Name_3_ ua="na">Company VM</Short_Name_3_>
<Share_Call_Appearance_3_ ua="na">private</Share_Call_Appearance_3_> <!-- options: private/shared -->
<Extended_Function_3_ ua="na">fnc=sd;ext=*[email protected]</Extended_Function_3_>
<RTP_Packet_Size ua="na">0.020</RTP_Packet_Size>
<Programmable_Softkey_Enable ua="na">Yes</Programmable_Softkey_Enable>
<Idle_Key_List ua="na">em_login|1;acd_login|1;acd_logout|1;astate|2;avail|3;unavail|3;redial|5;dir|6;cfwd|7;dnd|8;pickup|10;gpickup|11;unpark|12;guestIn|13;guestOut|13;em_logout</Idle_Key_List>
<Missed_Call_Key_List ua="na">miss|4</Missed_Call_Key_List>
<Off_Hook_Key_List ua="na">redial|1;dir|2;cfwd|3</Off_Hook_Key_List>
<Dialing_Input_Key_List ua="na">dial|1;delchar|2;cancel|3;dir|4</Dialing_Input_Key_List>
<Progressing_Key_List ua="na">endcall|4</Progressing_Key_List>
<Connected_Key_List ua="na">xfer|1;bxfer|2;conf|3;endcall|4;toggle;confLx;xferLx;park;phold;flash;</Connected_Key_List>
<Start-Xfer_Key_List ua="na">hold|1;endcall|2;xfer|4;toggle;</Start-Xfer_Key_List>
<Start-Conf_Key_List ua="na">hold|1;endcall|2;conf|4;toggle;</Start-Conf_Key_List>
<Conferencing_Key_List ua="na">hold|1;endcall|2;join|4</Conferencing_Key_List>
<Releasing_Key_List ua="na">endcall|4;</Releasing_Key_List>
<Hold_Key_List ua="na">resume|1;endcall|2;newcall|3;redial;dir;cfwd;dnd</Hold_Key_List>
<Ringing_Key_List ua="na">answer|1;ignore|2;toggle|4</Ringing_Key_List>
<Shared_Active_Key_List ua="na">newcall|1;barge|2;cfwd|3;dnd|4</Shared_Active_Key_List>
<Shared_Held_Key_List ua="na">resume|1;barge|2;cfwd|3;dnd|4</Shared_Held_Key_List>
<PSK_1 ua="na"></PSK_1>
<PSK_2 ua="na"></PSK_2>
<PSK_3 ua="na"></PSK_3>
<PSK_4 ua="na"></PSK_4>
<PSK_5 ua="na"></PSK_5>
<PSK_6 ua="na"></PSK_6>
<PSK_7 ua="na"></PSK_7>
<PSK_8 ua="na"></PSK_8>
<PSK_9 ua="na"></PSK_9>
<PSK_10 ua="na"></PSK_10>
<PSK_11 ua="na"></PSK_11>
<PSK_12 ua="na"></PSK_12>
<PSK_13 ua="na"></PSK_13>
<PSK_14 ua="na"></PSK_14>
<PSK_15 ua="na"></PSK_15>
<PSK_16 ua="na"></PSK_16>
<Line_Navigation ua="na">Per Call</Line_Navigation>
<Admin_Passwd ua="na">Corp-Secret</Admin_Passwd>
<Signaling_Protocol ua="na">SIP</Signaling_Protocol>
<Connection_Type ua="rw">Static IP</Connection_Type>
<!-- System Configuration -->
<Static_IP ua="rw">10.1.1.72</Static_IP>
<!-- System Configuration -->
<NetMask ua="rw">255.255.255.0</NetMask>
<Gateway ua="rw">10.1.1.1</Gateway>
<Primary_DNS ua="rw">10.1.1.1</Primary_DNS>
<Secondary_DNS ua="rw">4.2.2.2</Secondary_DNS>
<NTP_Enable ua="na">Yes</NTP_Enable>
<Primary_NTP_Server ua="na">us.pool.ntp.org</Primary_NTP_Server>
<Secondary_NTP_Server ua="na">pool.ntp.org</Secondary_NTP_Server>
<Provision_Enable ua="na">Yes</Provision_Enable>
<Resync_Periodic ua="na">3600</Resync_Periodic>
<Transport_Protocol ua="na">tftp</Transport_Protocol>
<Upgrade_Enable ua="na">Yes</Upgrade_Enable>
<Upgrade_Rule ua="na">( $SWVER ne 7.5.6 )? tftp://10.1.1.10/sw/spa51x-7-5-6.bin</Upgrade_Rule>
<Line_Enable_1_ ua="na">Yes</Line_Enable_1_>
<Proxy_1_ ua="na">10.1.1.10</Proxy_1_>
<Register_1_ ua="na">Yes</Register_1_>
<Make_Call_Without_Reg_1_ ua="na">No</Make_Call_Without_Reg_1_>
<Ans_Call_Without_Reg_1_ ua="na">No</Ans_Call_Without_Reg_1_>
<!-- System Configuration -->
<Display_Name_1_ ua="na">Val</Display_Name_1_>
<User_ID_1_ ua="na">101</User_ID_1_>
<!-- System Configuration -->
<Password_1_ ua="na">Corp-Secret</Password_1_>
<Use_Auth_ID_1_ ua="na">No</Use_Auth_ID_1_>
<Dial_Plan_1_ ua="na">(*xxxxx*xxx|7xxx|1xxS0|[3469]11S0|911S0|[2-9]xxxxxxxxxS0)</Dial_Plan_1_>
<Line_Enable_2_ ua="na">No</Line_Enable_2_>
<Line_Enable_3_ ua="na">No</Line_Enable_3_>
<Line_Enable_4_ ua="na">No</Line_Enable_4_>
<Log_Missed_Calls_for_EXT_1 ua="na">Yes</Log_Missed_Calls_for_EXT_1>
<Back_Light_Timer ua="na">Always On</Back_Light_Timer>
<!-- System Configuration -->
<Station_Name ua="na">Val</Station_Name>
<Station_Display_Name ua="na">Val</Station_Display_Name>
<!-- System Configuration -->
<Voice_Mail_Number ua="na">*97</Voice_Mail_Number>
<BMP_Picture_Download_URL ua="na"></BMP_Picture_Download_URL>
<Select_Logo ua="na"></Select_Logo>
<Select_Background_Picture ua="na"></Select_Background_Picture>
<Screen_Saver_Icon ua="rw"></Screen_Saver_Icon>
<Extension_1_ ua="na">1</Extension_1_>
<Extension_2_ ua="na">Disabled</Extension_2_>
<Extension_3_ ua="na">Disabled</Extension_3_>
<Extension_4_ ua="na">Disabled</Extension_4_>
<Softkey_Navigation_Style ua="na">More</Softkey_Navigation_Style>
<Call_Return_Code ua="na"></Call_Return_Code>
<Blind_Transfer_Code ua="na"></Blind_Transfer_Code>
<Call_Back_Act_Code ua="na"></Call_Back_Act_Code>
<Call_Back_Deact_Code ua="na"></Call_Back_Deact_Code>
<Cfwd_All_Act_Code ua="na"></Cfwd_All_Act_Code>
<Cfwd_All_Deact_Code ua="na"></Cfwd_All_Deact_Code>
<Cfwd_Busy_Act_Code ua="na"></Cfwd_Busy_Act_Code>
<Cfwd_Busy_Deact_Code ua="na"></Cfwd_Busy_Deact_Code>
<Cfwd_No_Ans_Act_Code ua="na"></Cfwd_No_Ans_Act_Code>
<Cfwd_No_Ans_Deact_Code ua="na"></Cfwd_No_Ans_Deact_Code>
<CW_Act_Code ua="na"></CW_Act_Code>
<CW_Deact_Code ua="na"></CW_Deact_Code>
<CW_Per_Call_Act_Code ua="na"></CW_Per_Call_Act_Code>
<CW_Per_Call_Deact_Code ua="na"></CW_Per_Call_Deact_Code>
<Block_CID_Act_Code ua="na"></Block_CID_Act_Code>
<Block_CID_Deact_Code ua="na"></Block_CID_Deact_Code>
<Block_CID_Per_Call_Act_Code ua="na"></Block_CID_Per_Call_Act_Code>
<Block_CID_Per_Call_Deact_Code ua="na"></Block_CID_Per_Call_Deact_Code>
<Block_ANC_Act_Code ua="na"></Block_ANC_Act_Code>
<Block_ANC_Deact_Code ua="na"></Block_ANC_Deact_Code>
<DND_Act_Code ua="na"></DND_Act_Code>
<DND_Deact_Code ua="na"></DND_Deact_Code>
<Secure_All_Call_Act_Code ua="na"></Secure_All_Call_Act_Code>
<Secure_No_Call_Act_Code ua="na"></Secure_No_Call_Act_Code>
<Secure_One_Call_Act_Code ua="na"></Secure_One_Call_Act_Code>
<Secure_One_Call_Deact_Code ua="na"></Secure_One_Call_Deact_Code>
<Paging_Code ua="na"></Paging_Code>
<Call_Park_Code ua="na"></Call_Park_Code>
<Call_Pickup_Code ua="na"></Call_Pickup_Code>
<Call_UnPark_Code ua="na"></Call_UnPark_Code>
<Group_Call_Pickup_Code ua="na"></Group_Call_Pickup_Code>
<Media_Loopback_Code ua="na"></Media_Loopback_Code>
<Referral_Services_Codes ua="na"></Referral_Services_Codes>
<Feature_Dial_Services_Codes ua="na"></Feature_Dial_Services_Codes>
<Service_Annc_Base_Number ua="na"></Service_Annc_Base_Number>
<Service_Annc_Extension_Codes ua="na"></Service_Annc_Extension_Codes>
<Prefer_G711u_Code ua="na"></Prefer_G711u_Code>
<Force_G711u_Code ua="na"></Force_G711u_Code>
<Prefer_G711a_Code ua="na"></Prefer_G711a_Code>
<Force_G711a_Code ua="na"></Force_G711a_Code>
<Prefer_G723_Code ua="na"></Prefer_G723_Code>
<Force_G723_Code ua="na"></Force_G723_Code>
<Prefer_G722_Code ua="na"></Prefer_G722_Code>
<Force_G722_Code ua="na"></Force_G722_Code>
<Prefer_L16_Code ua="na"></Prefer_L16_Code>
<Force_L16_Code ua="na"></Force_L16_Code>
<Prefer_AMR-WB_Code ua="na"></Prefer_AMR-WB_Code>
<Force_AMR-WB_Code ua="na"></Force_AMR-WB_Code>
<Prefer_G726r16_Code ua="na"></Prefer_G726r16_Code>
<Force_G726r16_Code ua="na"></Force_G726r16_Code>
<Prefer_G726r24_Code ua="na"></Prefer_G726r24_Code>
<Force_G726r24_Code ua="na"></Force_G726r24_Code>
<Prefer_G726r32_Code ua="na"></Prefer_G726r32_Code>
<Force_G726r32_Code ua="na"></Force_G726r32_Code>
<Prefer_G726r40_Code ua="na"></Prefer_G726r40_Code>
<Force_G726r40_Code ua="na"></Force_G726r40_Code>
<Prefer_G729a_Code ua="na"></Prefer_G729a_Code>
<Force_G729a_Code ua="na"></Force_G729a_Code>
<Time_Zone ua="na">GMT-06:00</Time_Zone>
<Daylight_Saving_Time_Rule ua="na">start=3/8/7/2:0:0;end=11/1/7/2:0:0;save=1</Daylight_Saving_Time_Rule>
<Daylight_Saving_Time_Enable ua="na">Yes</Daylight_Saving_Time_Enable>
<Locale ua="na">en-US</Locale>
<Unit_1_Enable ua="na">Yes</Unit_1_Enable>
<Unit_2_Enable ua="na">No</Unit_2_Enable>
<Server_Type ua="na">Asterisk</Server_Type>
<Unit_1_Key_1 ua="na">fnc=sd+blf;[email protected]</Unit_1_Key_1>
<Unit_1_Key_2 ua="na">fnc=sd+blf;[email protected]</Unit_1_Key_2>
<Unit_1_Key_3 ua="na">fnc=sd+blf;[email protected]</Unit_1_Key_3>
<Unit_1_Key_4 ua="na">fnc=sd+blf;[email protected]</Unit_1_Key_4>
<Unit_1_Key_5 ua="na">fnc=sd+blf;[email protected]</Unit_1_Key_5>
<Unit_1_Key_6 ua="na"/>
<Unit_1_Key_7 ua="na">fnc=sd+blf;[email protected]</Unit_1_Key_7>
<Unit_1_Key_8 ua="na"/>
<Unit_1_Key_9 ua="na">fnc=sd+blf;[email protected]</Unit_1_Key_9>
<Unit_1_Key_10 ua="na">fnc=sd+blf;[email protected]</Unit_1_Key_10>
<Unit_1_Key_11 ua="na"/>
<Unit_1_Key_12 ua="na">fnc=sd+blf;[email protected]</Unit_1_Key_12>
<Unit_1_Key_13 ua="na">fnc=sd+blf;[email protected]</Unit_1_Key_13>
<Unit_1_Key_14 ua="na">fnc=sd+blf;[email protected]</Unit_1_Key_14>
<Unit_1_Key_15 ua="na">fnc=sd+blf;[email protected]</Unit_1_Key_15>
<Unit_1_Key_16 ua="na">fnc=sd+blf;[email protected]</Unit_1_Key_16>
<Unit_1_Key_17 ua="na">fnc=sd+blf;[email protected]</Unit_1_Key_17>
<Unit_1_Key_18 ua="na">fnc=sd+blf;[email protected]</Unit_1_Key_18>
<Unit_1_Key_19 ua="na">fnc=sd+blf;[email protected]</Unit_1_Key_19>
<Unit_1_Key_20 ua="na">fnc=sd+blf;[email protected]</Unit_1_Key_20>
<Unit_1_Key_21 ua="na">fnc=sd+blf;[email protected]</Unit_1_Key_21>
<Unit_1_Key_22 ua="na">fnc=sd+blf;[email protected]</Unit_1_Key_22>
<Unit_1_Key_23 ua="na">fnc=sd+blf;[email protected]</Unit_1_Key_23>
<Unit_1_Key_24 ua="na">fnc=sd+blf;[email protected]</Unit_1_Key_24>
<Unit_1_Key_25 ua="na">fnc=sd+blf;[email protected]</Unit_1_Key_25>
<Unit_1_Key_26 ua="na">fnc=sd+blf;[email protected]</Unit_1_Key_26>
<Unit_1_Key_27 ua="na"/>
<Unit_1_Key_28 ua="na"/>
<Unit_1_Key_29 ua="na"/>
<Unit_1_Key_30 ua="na"/>
<Unit_1_Key_31 ua="na">fnc=sd+blf;sub=*45101*[email protected]</Unit_1_Key_31>
<Unit_1_Key_32 ua="na">fnc=sd+blf;sub=*[email protected]</Unit_1_Key_32>
</flat-profile>
Example of dir.xml file used by configs above
<CiscoIPPhoneDirectory>
<Title>Corp Directory</Title>
<Prompt>Select a User</Prompt>
<DirectoryEntry>
<Name>Front Desk</Name>
<Telephone>100</Telephone>
</DirectoryEntry>
<DirectoryEntry>
<Name>Customer Service</Name>
<Telephone>101</Telephone>
</DirectoryEntry>
</CiscoIPPhoneDirectory>
Visual Voicemail script used: (voicemail.php)
<?php
$VMDIR="/var/spool/asterisk/voicemail/default"; // Directorio donde se encuentran los mensajes de voz
$URLXML="http://10.1.1.10/voicemail";
$USER=trim($_GET[user]); // Obtenemos el usuario que queremos consultar
$msg=trim($_GET[msg]);
$call=trim($_GET[call]);
//$USER="0626"; // ESTO HABRA QUE QUITARLO CUANDO
// Obtenemos los datos y los almacenamos en la estructura
$VMDIR.="/$USER/INBOX"; // Le añadimos el usuario del voicemail
$localdir=opendir($VMDIR);
while ($cnt=readdir($localdir)){
if ($cnt[0] != "."){
if (strpos($cnt,".txt") !== false){
$listaArchivos[]=$cnt;
}
}
}
sort($listaArchivos);
for ($t=0; $t<count($listaArchivos); $t++){
$tmpfile=file($VMDIR."/".$listaArchivos[$t]);
list($mensaje[$t][archivo])=explode(".",$listaArchivos[$t]);
for ($f=0; $f<count($tmpfile); $f++){ // Parseamos todas las filas buscando los parámetros
list($campo,$valor)=explode("=",$tmpfile[$f]);
$campo=trim($campo); $valor=trim($valor);
if (($campo != "")&&($valor != "")){
$mensaje[$t][$campo]=$valor;
}
}
}
header ("content-type: text/xml");
if (($USER != "")&&($msg == "") && ($call == "")){ // Mostramos un menú básico con los mensajes que tiene por leer
echo "<CiscoIPPhoneMenu>\n";
echo "<Title>Voicemail menu</Title>\n";
echo "<Prompt>Select a message</Prompt>\n";
for ($t=0; $t<count($mensaje); $t++){
list($n,$orig)=explode("<",$mensaje[$t][callerid]);
list($orig)=explode(">",$orig);
$fecha=date("m/d g:ia",$mensaje[$t][origtime]);
$msg=trim($msg);
if (($USER != "") && ($msg == "")){
echo "<MenuItem>\n";
echo " <Name>$fecha $n ($orig)</Name>\n";
echo " <URL>$URLXML/voicemail.php?user=$USER&msg=$t</URL>\n";
echo "</MenuItem>\n";
}
}
echo "<SoftKeyItem>\n";
echo " <Name>Exit</Name>\n";
echo " <URL>Init:Services</URL>\n"; //Force application to close
echo " <Position>1</Position>\n";
echo "</SoftKeyItem>\n";
echo "<SoftKeyItem>\n";
echo " <Name>Select</Name>\n";
echo " <URL>SoftKey:Select</URL>\n";
echo " <Position>2</Position>\n";
echo "</SoftKeyItem>\n";
echo "</CiscoIPPhoneMenu>\n";
}elseif (($USER != "")&&($msg != "")&&($call == "")){ // Hemos seleccionado un mensaje, le damos los datos
echo "<CiscoIPPhoneText>\n";
echo "<Title>Menu Voicemail</Title>\n";
echo "<Prompt> </Prompt>\n";
list($n,$orig)=explode("<",$mensaje[$msg][callerid]);
list($orig)=explode(">",$orig);
$fecha=date("m/d/Y g:ia",$mensaje[$msg][origtime]);
$msg=trim($msg);
echo "<Text>Date: $fecha\n Caller: $n ($orig)\n Length: ".$mensaje[$msg][duration]." Seconds</Text> \n";
echo "<SoftKeyItem>\n";
echo " <Name>Exit</Name>\n";
echo " <URL>$URLXML/voicemail.php?user=$USER</URL>\n";
echo " <Position>1</Position>\n";
echo "</SoftKeyItem>\n";
echo "<SoftKeyItem>\n";
echo " <Name>Play</Name>\n";
echo " <URL>$URLXML/voicemail.php?user=$USER&msg=$msg&call=1</URL>\n";
echo " <Position>2</Position>\n";
echo "</SoftKeyItem>\n";
echo "<SoftKeyItem>\n";
echo " <Name>Delete</Name>\n";
echo " <URL>$URLXML/voicemail.php?user=$USER&msg=$msg&call=3</URL>\n";
echo " <Position>3</Position>\n";
echo "</SoftKeyItem>\n";
echo "</CiscoIPPhoneText>\n";
}elseif (($USER != "")&&($msg != "")&&($call == 1) ){ // Play Message
$random=rand(100,999);
$f1=fopen("/tmp/getVoiceMailMsg$random.call","w+");
//fputs($f1,"Channel: SIP/$USER\n"); If you Use FeePBX and have "Paging and Intercom" Enabled you can uncomment the following line and comment out this line to have the phone auto pickup and start playing your message
fputs($f1,"Channel: Local/*80$USER@ext-intercom\n");
fputs($f1,"Application: Playback\n");
fputs($f1,"Data: $VMDIR/".$mensaje[$msg][archivo]."");
fclose($f1);
rename("/tmp/getVoiceMailMsg$random.call","/var/spool/asterisk/outgoing/getVoiceMailMsg$random.call");
echo "<CiscoIPPhoneText>\n";
echo "<Title>Menu Voicemail</Title>\n";
echo "<Prompt> </Prompt>\n";
list($n,$orig)=explode("<",$mensaje[$msg][callerid]);
list($orig)=explode(">",$orig);
$fecha=date("m/d/Y g:ia",$mensaje[$msg][origtime]);
$msg=trim($msg);
echo "<Text>Date: $fecha\n Caller: $n ($orig)\n Length: ".$mensaje[$msg][duration]." Seconds</Text> \n";
echo "<SoftKeyItem>\n";
echo " <Name>Exit</Name>\n";
echo " <URL>$URLXML/voicemail.php?user=$USER</URL>\n";
echo " <Position>1</Position>\n";
echo "</SoftKeyItem>\n";
echo "<SoftKeyItem>\n";
echo " <Name>Play</Name>\n";
echo " <URL>$URLXML/voicemail.php?user=$USER&msg=$msg&call=1</URL>\n";
echo " <Position>2</Position>\n";
echo "</SoftKeyItem>\n";
echo "<SoftKeyItem>\n";
echo " <Name>Delete</Name>\n";
echo " <URL>$URLXML/voicemail.php?user=$USER&msg=$msg&call=3</URL>\n";
echo " <Position>3</Position>\n";
echo "</SoftKeyItem>\n";
echo "</CiscoIPPhoneText>\n";
}elseif (($USER != "")&&($msg != "")&&($call == 3) ){ // Delete Message
unlink("$VMDIR/".$mensaje[$msg][archivo].".wav");
unlink("$VMDIR/".$mensaje[$msg][archivo].".WAV");
unlink("$VMDIR/".$mensaje[$msg][archivo].".txt");
unlink("$VMDIR/".$mensaje[$msg][archivo].".gsm");
echo "<CiscoIPPhoneText>\n";
echo "<Title>Menu Voicemail</Title>\n";
echo "<Prompt> </Prompt>\n";
echo "<Text>Message Deleted</Text> \n";
echo "<SoftKeyItem>\n";
echo " <Name>Exit</Name>\n";
echo " <URL>$URLXML/voicemail.php?user=$USER</URL>\n";
echo " <Position>1</Position>\n";
echo "</SoftKeyItem>\n";
echo "</CiscoIPPhoneText>\n";
}
?>