News aus dem Developer Garden
Erfahre alle Neuigkeiten rund um unsere APIs und SDKs, neue Entwicklerprojekte und aktuelle Veranstaltungen.

How to: Entwicklung der TYPO3 Extension auf Basis Conference Call API

Dec 29th

Die Conference Call API ist die komplexeste API des Developer Garden Portfolios. Es existieren insgesamt 20 REST-Methoden und ihr könnt mit Hilfe der API Telefonkonferenzen mit bis zu 15 Personen erstellen. Es gibt Ad-hoc-Konferenzen, die sofort beginnen und geplante Konferenzen. Während einer Konferenz können z.B. Teilnehmer hinzugefügt oder entfernt werden. Um ein gutes Conference Call Plug-in zu entwickeln, wird die AJAX-Technologie benötigt.

Im vorigen Artikel zu Send SMS haben wir euch gezeigt, wie eine einfache Extension erstellt werden kann. Ihr könnt wieder die Extension "Kickstarter" benutzen, aber dieses Mal kopiert ihr das Verzeichnis "/src/conferencecall/" statt "/src/sendsms/ in den "lib" Ordner. Für die AJAX-Funktionalität wird die Bibliothek "jQuery" gebraucht und sie soll auch in "lib" kopiert werden.

Der zweite Schritt ist die Erstellung des sogenannten "eId" Scripts. "eId" bedeutet "Extension Id" und dieses Skript kann bei "www.example.com?eID=schuesselwort" aufgerufen werden. Der Aufruf dieses Skripts unterbricht das normalen Rendering-Prozess, deswegen können die reinen JSON- oder XML-Daten ausgegeben werden.

Um ein neues Schlüsselwort zu registrieren, schreibt ihr in "ext_localconf.php":

$TYPO3_CONF_VARS['FE']['eID_include']['conferencecall'] = 'EXT:conferencecall/pi1/tx_conferencecall_eId.php';

Jetzt ist das Schlüsselwort "conferencecall" mit dem Skript "tx_conferencecall_eId.php" verbunden.

Die Datei "tx_conferencecall_eId.php" muss keine PHP-Klasse enthalten, sondern ein einfaches Skript. Am Anfang der Datei schreibt ihr:

if (!defined ('PATH_typo3conf')) die ('Access denied.');

Und fügt das SDK hinzu:

require_once(dirname(__FILE__) . '/../lib/sdk/conferencecall/client/ConferenceCallClient.php');
require_once(dirname(__FILE__) . '/../lib/sdk/conferencecall/data/ConferenceCallStatusConstants.php');

Die POST-Variable "command" wird die Funktionen des SDKs repräsentieren. "0" wird CreatateConference() bedeuten, "1" wird auch CreatateConference(), aber nur für geplante Konferenzen, "2" wird AddParticipant() aufgerufen u.s.w.

switch($_POST['command']) {
  case 0:
    // Creates Ad Hoc conference
    $createConferenceResponse = null;
    try {
      $createConferenceResponse = $client->createConference($_POST['ownerID'], $_POST['name'], $_POST['description'], null, null, $_POST['duration'], $_POST['joinConfirm'], null, null);
      if(!($createConferenceResponse->getStatus()->getStatusConstant() == ConferenceCallStatusConstants::SUCCESS)) {
        $errorMessage = $createConferenceResponse->getStatus()->getStatusDescriptionEnglish();
        throw new Exception($errorMessage);
      } else {
        $a = Array (
          'Status' => 1,
          'ConfId' => $createConferenceResponse->getConferenceId()
        );
      }
    }
catch(Exception $e) {
      $a = Array (
        'Status' => 0,
        'ConfId' => 0
      );
    }

    break;
}

Da der Telekom-Client im eId Skript erstellt wird, müssen die Developer Center Logindaten (Benutzername und Kennwort) in dieses Skript übergeben werden. Das könnt ihr mit einer TYPO3-Session machen. In die Funktion "main" der "tx_conferencecall_pi1.php" Datei schreibt ihr:

$GLOBALS['TSFE']->fe_user]->setKey('ses','dc_username', $username);
$GLOBALS['TSFE']->fe_user]->setKey('ses','dc_password', $password);
$GLOBALS['TSFE']->fe_user]->setKey('ses','dc_proxy', $proxy);
$GLOBALS['TSFE']->fe_user]->setKey('ses','dc_environment', $environment);
$GLOBALS['TSFE']->storeSessionData();

Werden die Anmeldedaten in einer FlexForm gespeichert, schreibt ihr vor der Session-Bearbeitung:

$this->pi_initPIflexform();
$username = $this->pi_getFFvalue($this->cObj->data['pi_flexform'], 'DC_Login', 'sheet1');
$password = $this->pi_getFFvalue($this->cObj->data['pi_flexform'], 'DC_Password', 'sheet1');
$proxy = $this->pi_getFFvalue($this->cObj->data['pi_flexform'], 'Proxy', 'sheet1');
$env = $this->pi_getFFvalue($this->cObj->data['pi_flexform'], 'Environment', 'sheet1');

Dann müsst ihr HTML-Formulare für alle Funktionen erstellen und es fehlt noch ein JS Script, das die Funktionen aus eId Skript aufruft. Zuerst fügt ihr Links zur jQuery- und neuen JavaScript-Datei ins "tx_conferencecall_pi1.php" hinzu.

$GLOBALS['TSFE']->additionalHeaderData[$this->prefixId] .= '<script src="' . t3lib_extMgm::siteRelPath($this->extKey) . 'lib/jquery.js" type="text/javascript" />';
$GLOBALS['TSFE']->additionalHeaderData[$this->prefixId] .= '<script src="' . t3lib_extMgm::siteRelPath($this->extKey) . 'pi1/tx_conferencecall_pi1.js" />';

Und dann schreibt ihr die Implementierung der benötigen Funktionen in die "tx_conferencecall_pi1.js".

function confcall_newParticipantInTemplate() {
  jQuery.ajax({
    url: "index.php",
    type: "POST",
    data: {
        eID: "conferencecall",
        command: 3,
        confID: jQuery("#conf_id").val(),
        firstname: jQuery("#conf_firstname").val(),
        lastname: jQuery("#conf_lastname").val(),
        phonenumber: jQuery("#conf_phone").val(),
        email: jQuery("#conf_email").val()
      },
    dataType: "json",
    success: function(response) {
        if (response.Status == 1) {
          // Der Teilnehmer wurde erfolgreich zur Konferenz hinzugefügt
        } else {
          // Es gibt Fehler
        }
    }
,
    error: function(error) {
        // AJAX-Fehler
    }
  });
}

Als Beispiel könntet ihr die Conference Call Extension, in der die API-Methoden bereits implementiert wurden, im TYPO3 Extensions Repository und im TYPO3 Forge finden.

Von: Alexander Kraskov

Responses to “How to: Entwicklung der TYPO3 Extension auf Basis Conference Call API”

    Keine Kommentare
Kommentieren