Skype4COM: Call.php

Skype4COM

Call.php

This PHP script places a call through the Skype API, and monitors status while the call is in progress.

Copyright � 2004-2006 Skype Limited. Licensed under BSD license.

<?php

// Event sink:
class _ISkypeEvents {
  
  function AttachmentStatus($status) {
   echo ">Attachment status $status\n";
  }
  function CallStatus($call, $status) {
   echo ">Call $call->id status $status\n";
  }
}

// Create a Skype4COM object:
$skype = new COM("Skype4COM.Skype");

// Create a sink object:
$sink =& new _ISkypeEvents ();
$sink->convert = $skype->convert();

// Connect to the sink:
com_event_sink($skype, $sink, "_ISkypeEvents");

// Create a conversion object:
$convert = $skype->convert;
$convert->language = "en";

// Start the Skype client, minimized and with no splash screen:
if (!$skype->client()->isRunning()) {
  $skype->client()->start(true, true);
}

// If the user status is not "online", change user status to "online":
if ($skype->currentUserStatus() == $convert->textToUserStatus("OFFLINE")) {  
  $skype->changeUserStatus($convert->textToUserStatus("ONLINE"));
}

// Create a user object
$user = $skype->user("echo123");
echo "User " . $user->handle . " online status is " . $convert->onlineStatusToText($user->onlineStatus) . "\n";

// Place a call
$call = $skype->PlaceCall($user->handle);

// Wait for the call to be "in progress" and report an error if:
while ($call->status <> $convert->textToCallStatus("INPROGRESS")) {
  if ($call->status == $convert->textToCallStatus("FAILED") || 
    $call->status == $convert->textToCallStatus("REFUSED") || 
    $call->status == $convert->textToCallStatus("CANCELLED") || 
    $call->status == $convert->textToCallStatus("FINISHED") || 
    $call->status == $convert->textToCallStatus("BUSY"))
    die ("Call status " . $convert->callStatusToText($call->status));
  else
    com_message_pump (500);       
}

// Send dtmf tones:
com_message_pump (10000);
if ($call->status == $convert->textToCallStatus("INPROGRESS")) $call->dtmf = "0";
com_message_pump (500);
if ($call->status == $convert->textToCallStatus("INPROGRESS")) $call->dtmf = "1";
com_message_pump (500);
if ($call->status == $convert->textToCallStatus("INPROGRESS")) $call->dtmf = "2";
com_message_pump (500);
if ($call->status == $convert->textToCallStatus("INPROGRESS")) $call->dtmf = "3";
com_message_pump (500);
if ($call->status == $convert->textToCallStatus("INPROGRESS")) $call->dtmf = "4";
com_message_pump (500);
if ($call->status == $convert->textToCallStatus("INPROGRESS")) $call->dtmf = "5";
com_message_pump (500);
if ($call->status == $convert->textToCallStatus("INPROGRESS")) $call->dtmf = "6";
com_message_pump (500);
if ($call->status == $convert->textToCallStatus("INPROGRESS")) $call->dtmf = "7";
com_message_pump (500);
if ($call->status == $convert->textToCallStatus("INPROGRESS")) $call->dtmf = "8";
com_message_pump (500);
if ($call->status == $convert->textToCallStatus("INPROGRESS")) $call->dtmf = "9";
com_message_pump (500);
if ($call->status == $convert->textToCallStatus("INPROGRESS")) $call->dtmf = "#";
com_message_pump (500);
if ($call->status == $convert->textToCallStatus("INPROGRESS")) $call->dtmf = "*";

// Finish the call: 
if ($call->status <> $convert->textToCallStatus("FINISHED")) $call->finish();

//Sleep:
com_message_pump (1000);
  
?>

Copyright � 2006 Skype Limited. All rights reserved.