cptjack
Member
Posts: 97
Joined: Jan 2014
|
RE: T38 wallpaper change
There are several ways to achieve this. Either all in the dialplan, or all in the PHP script or a combination of both. I haven't played around with AGI, but I'm sure you it can also call the curl script from the dialplan if needed.
1) You can include this macro-wallaper in your dialplan and call it from the night-mode extensions like this:
Code:
[macro-wallpaper]
exten => s,1,NoOp(Setting wallpaper of phone ${CHANNEL(peerip)} to ${ARG1})
same => n,Set(options=profileOpen("/phone/config/user.ini")profileSetString("PhoneSetting","BackGrounds","Config:${ARG1}")profileSave()msgBroadcastPostMessage("0x10007","43","0")))
same => n,System(curl --form-string 'postCommands=${options}' http://${CHANNEL(peerip)}/cgi-bin/cgiServer.exx)
[night-mode-ext]
exten => *32,1,NoOp(CLOSED - Nightmode)
same => n,Macro(wallpaper,wall01.jpg)
same => n,Hangup()
exten => *34,1,NoOp(BACK - Backline-Group/Weekend)
same => n,Macro(wallpaper,wall02.jpg)
same => n,Hangup()
exten => *30,1,NoOp(HERE - Recept answering)
same => n,Macro(wallpaper,wall03.jpg)
same => n,Hangup()
exten => *31,1,NoOp(AWAY - Ring-Group answering (Lunch))
same => n,Macro(wallpaper,wall04.jpg)
same => n,Hangup()
Note: this uses the System() call and will execute the parameters passed to it in the shell. So, make sure the command is secure and do NOT pass anything to it that is not verified as safe. In this case we use ${CHANNEL(peerip)} to get the phone ip address and ${ARG1} to pass the name of the wallpaper to set.
2) You can change the PHP script above to use URI=DIAL:*3x instead of URI=Key:Cancel. It will accomplish the same thing, but via the external script:
PHP Code:
<?php ini_set('error_reporting', E_ALL); ini_set('display_errors', '0');
// Server and Phone URI $scripturl = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['PHP_SELF']; $phoneip = $_SERVER['REMOTE_ADDR']; // Your phone IP
$maxnum = 4; $username= "admin"; $password= "admin"; $extensions = array(1=>"*32",2=>"*34",3=>"*30",4=>"*31");
$id = 0; if (isset($_GET["id"])) { $id += $_GET["id"]; } if (isset($_GET["phoneip"])) { $phoneip = $_GET["phoneip"]; }
if (($id>0) && ($id<=$maxnum)) { // Change the Wallpaper and dial extension setWallpaper("wall0$id.jpg", $phoneip, $username, $password); echo '<YealinkIPPhoneExecute Beep="no"><ExecuteItem URI="Dial:'.$extensions[$id].'"/></YealinkIPPhoneExecute>'; } else { // List Options echo ' <?xml version="1.0" encoding="ISO-8859-1"?> <YealinkIPPhoneTextScreen Beep="no" defaultIndex="" cancelAction="" doneAction="" Timeout="10000" LockIn="no"> <Title wrap="yes">RECEPTIONIST STATUS</Title> <Text> CLOSED'."\t".'Nightmode BACK'."\t".'Backline-Group/Weekend HERE'."\t".'Recept answering AWAY'."\t".'Ring-Group answering (Lunch) </Text>
<SoftKey index="1"> <Label>CLOSED</Label> <URI>'.$scripturl."?id=1".'</URI> </SoftKey>
<SoftKey index="2"> <Label>BACK</Label> <URI>'.$scripturl."?id=2".'</URI> </SoftKey>
<SoftKey index="3"> <Label>HERE</Label> <URI>'.$scripturl."?id=3".'</URI> </SoftKey>
<SoftKey index="4"> <Label>AWAY</Label> <URI>'.$scripturl."?id=4".'</URI> </SoftKey>
</YealinkIPPhoneTextScreen>'; } function setWallpaper($rname, $host, $username, $password) { $ch = curl_init(); // Login to the web interface curl_setopt($ch, CURLOPT_USERPWD, $username . ":" . $password); curl_setopt($ch, CURLOPT_URL, 'http://'.$host); curl_setopt($ch, CURLOPT_COOKIEFILE, '/dev/null'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $store = curl_exec($ch); // Post Wallpaper Choice curl_setopt($ch, CURLOPT_URL, 'http://'.$host.'/cgi-bin/cgiServer.exx'); $postCommands='profileOpen("/phone/config/user.ini")profileSetString("PhoneSetting","BackGrounds","Config:'.$rname.'")profileSave()msgBroadcastPostMessage("0x10007","43","0"))'; $fields = array('postCommands' => $postCommands); curl_setopt($ch, CURLOPT_POSTFIELDS, $fields); $content = curl_exec($ch);
return $content; } ?>
3) Lastly, you can call the php script from the dialplan too:
Code:
exten => *32,1,NoOp(CLOSED - Nightmode)
same => n,Set(Result=${CURL(http://serverip/script.php?id=1&phoneip=${CHANNEL(peerip)})})
same => n,Hangup()
exten => *34,1,NoOp(BACK - Backline-Group/Weekend)
same => n,Set(Result=${CURL(http://serverip/script.php?id=2&phoneip=${CHANNEL(peerip)})})
same => n,Hangup()
exten => *30,1,NoOp(HERE - Recept answering)
same => n,Set(Result=${CURL(http://serverip/script.php?id=3&phoneip=${CHANNEL(peerip)})})
same => n,Hangup()
exten => *31,1,NoOp(AWAY - Ring-Group answering (Lunch))
same => n,Set(Result=${CURL(http://serverip/script.php?id=4&phoneip=${CHANNEL(peerip)})})
same => n,Hangup()
Please use the reputation button below if you like this post.
(This post was last modified: 06-19-2014 04:12 PM by cptjack.)
|
|