Sending SMS messages
Using Skype with PHP and Skype4COM
Now normally this is not a problem. I am one of those people who usually check their e-mail several times an hour, so I would get the notifications within about 15 minutes. More than fast enough for the particular website I was monitoring. However, another website which also lists accommodations has a much faster reading-rate. What is more, they have accommodations on a first-come-first-serve basis. Time really is of the essence when you want to get an appartment that way. Now it is fairly easy to get a PHP script to beep your PC speaker - just output the right character:
But my PC speaker is not very loud, and I will not hear it when I am in the next room, or listening to music. So in addition, my new script also sends me a text message whenever a last-minute accommodation becomes available. To do this, I used Skype, which offers a public API for just such needs.
Installing Skype4COM
The first step is to download Skype4COM. Extract the DLL file somewhere it can be found - for example, your windows/system32 directory. Check the properties and unblock it if you need to.
When you have succesfully extracted the Skype4COM dll, open a command line and navigate to the directory where you extracted it. Then, run regsvr32 to register it:
It should give you a notice that it succesfully registred Skype4COM.
Using Skype4COM in PHP
PHP offers a COM class to handle COM objects. The following example classes illustrate how you can use it to send an SMS message through Skype:
Using this class is fairly easy:
Code (php) (nieuw venster):
1 echo chr(7);
But my PC speaker is not very loud, and I will not hear it when I am in the next room, or listening to music. So in addition, my new script also sends me a text message whenever a last-minute accommodation becomes available. To do this, I used Skype, which offers a public API for just such needs.
Installing Skype4COM
The first step is to download Skype4COM. Extract the DLL file somewhere it can be found - for example, your windows/system32 directory. Check the properties and unblock it if you need to.
When you have succesfully extracted the Skype4COM dll, open a command line and navigate to the directory where you extracted it. Then, run regsvr32 to register it:
Code (php) (nieuw venster):
1 regsvr32 Skype4COM.dll
It should give you a notice that it succesfully registred Skype4COM.
Using Skype4COM in PHP
PHP offers a COM class to handle COM objects. The following example classes illustrate how you can use it to send an SMS message through Skype:
Code (php) (nieuw venster):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80 /**
* Skype COM interface class.
*
* Basic class to handle talking to a Skype client.
**/
class Skype {
const LIBRARY = "Skype4COM.Skype", // Library name.
SMS_TYPE_OUTGOING = 1; // smsMessageTypeOutgoing.
private $com = null, // COM object.
$sink = null, // Skype event sink object.
$convert = null; // Skype Convert object.
/**
* Create and initiate a new Skype COM object handler.
**/
public function __construct () {
$this -> com = new COM(self::LIBRARY);
$this -> sink = new SkypeEventSink();
$this -> sink -> convert = $this -> com -> convert();
com_event_sink($this -> com, $this -> sink, "_ISkypeEvents");
$this -> convert = $this -> com -> convert;
$this -> convert -> language = "en";
$this -> checkClient();
}
/**
* Send a text message through Skype.
*
* @param target String Valid telephone number to send to.
* @param body String SMS message body to send. Should be no more
* than 160 alfanumeric chars.
* @return Bool Either true on success or false on failure.
**/
public function sendSms ($target, $body) {
try {
$sms = $this -> com -> CreateSms(self::SMS_TYPE_OUTGOING, $target);
$sms -> Body = $body;
$sms -> Send();
} catch (com_exception $e) {
print_r($e -> getMessage());
return false;
}
return true;
}
/**
* Make sure the Skype client is running. If not, attempt to
* start it.
**/
private function checkClient () {
if (!$this -> com -> client() -> isRunning())
$this -> com -> client() -> start(true, true);
}
}
/**
* Handle Skype events.
**/
class SkypeEventSink {
public $convert;
public function AttachmentStatus ($status) {
echo ">Attachment status $status\n";
}
public function CallStatus ($call, $status) {
echo ">Call $call->id status $status\n";
}
}
Using this class is fairly easy:
Code (php) (nieuw venster):
1
2 $skype = new Skype();
$skype -> sendSms("+2511223344", "This is a test SMS message.");
No comments:
Post a Comment