Ein erster Blick auf das Incoming- und Idle-Skript

Im „Wie funktioniert CapiSuite?“ sagte ich schon, dass zwei Typen von Skripten in CapiSuite genutzt werden. Schauen wir sie uns jetzt mal genauer an.

Das Incoming-Skript

Immer, wenn ein Anruf von CapiSuite empfangen wird, wird das Incoming-Skript aufgerufen - um genau zu sein, es wird eine Funktion namens callIncoming in einem Python-Skript irgendwo auf Ihrer Festplatte aufgerufen. Dieses "irgendwo" wurde im „Konfiguration von CapiSuite“ definiert, erinnern Sie sich?

Das Skript muss also immer eine Funktion mit folgender Signatur definieren:

def callIncoming(call,service,call_from,call_to):
	# Funktionsrumpf
	...

Die von CapiSuite übergebenen Parameter sind:

call

Referenz auf den eingehenden Anruf. Diese wird später in allen CapiSuite-Funktionen, die Sie aufrufen, dazu genutzt, dem System mitzuteilen, welcher Anruf gemeint ist. Sie werden diesen Parameter nur an andere Funktionen weitergeben - das Skript kann nichts damit anfangen (er ist unsichtbar).

service (Integer)

Service des eingehenden Anrufs wie er vom ISDN signalisiert wird. Folgende Werte sind möglich:

  • SERVICE_VOICE: Sprach-Anruf

  • SERVICE_FAXG3: analoger Fax-Anruf

  • SERVICE_OTHER: anderer Service, der oben nicht gelistet ist

call_from (String)

Die Nummer des Anrufers (Quelle des Anrufs) als Python-String

call_to (String)

Die angerufene Nummer (Ziel des Anrufs) als Python-String

Die erste Aufgabe der Funktion sollte es sein, zu entscheiden, ob sie den Anruf annehmen oder ablehnen möchte. Wenn sie ihn annimmt, wird sie normalerweise etwas damit machen (ein Fax empfangen, einen Sprach-Anruf aufnehmen, eine nette Ansage abspielen, ...) und die Verbindung dann beenden. Nachdem alle erforderliche Arbeit getan ist, sollte sie sich sofort beenden. In einem späteren Kapitel werde ich Ihnen ein paar Beispiele zeigen, um das etwas zu verdeutlichen.

Natürlich können Sie Ihre Anwendung in mehrere Funktionen und vielleicht mehrere Skripte aufteilen, die aufgerufen und/oder rekursiv importiert werden - aber der Startpunkt ist immer das Incoming-Skript, das callIncoming enthält. Wenn Python und CapiSuite richtig installiert sind, sollten Sie auch Python-Module importieren und benutzen können.

Das Idle-Skript

Während das Incoming-Skript nur gestartet wird, wenn ein Anruf herein kommt, brauchen wir einen anderen Mechanismus, um einen ausgehenden Anruf auszulösen. Da CapiSuite nicht wissen kann, wann Sie dies beabsichtigen, ruft es in regelmäßigen Abständen eine Funktion namens idle im sog. "Idle-Skript" auf. Wie die Abstände konfiguriert werden und wo sich das Skript befindent, finden Sie unter „Konfiguration von CapiSuite“.

Die aufgerufene Funktion muss folgende Signatur haben:

def idle(capi):
	# Funktionsrumpf
	...

Der einzige von CapiSuite übergebene Parameter ist:

capi

Dies ist eine Referenz auf eine interne Klasse von CapiSuite, die die Kommunikation mit der CAPI-Schnittstelle abwickelt. Sie müssen diesen Parameter an einige CapiSuite-Funktionen übergeben. Sie können darüber hinaus in Ihrem Skript nichts sinnvolles damit anfangen. Dieser Parameter ist nur zum internen Gebrauch und wird möglicherweise (hoffentlich) irgendwann entfernt werden. Bis dahin übergeben Sie ihn einfach, wo es erforderlich ist.

Jezt können Sie in dieser Funktion machen, was Sie wollen. Wahrscheinlich werden Sie in einem E-Mail-Account nach einem Auftrag sehen, nach einer zu sendenden Datei in einem speziellen Verzeichnis oder ähnliches und einen Anruf tätigen, um den Auftrag an den richtigen Empfänger zu schicken.

Theoretisch könnten Sie auch jede andere periodische Aufgabe auf Ihrem System mit dem Idle-Skript erledigen - aber wir sollten solche allgemeinen Dinge lieber Anwendungen überlassen, die für solche Sachen entwickelt wurden wie z.B. cron. ;-)

Wie oben erwähnt, kann idle andere Funktionen oder Skripte aufrufen, wenn Sie wollen, und alle Python-Module können importiert werden.