Prinzipielle ist es möglich für den Phoner in einen Lotusscript-Script ein OLE Automation object "Phoner.CPhoner" anzulegen, diesem eine Nummer zu übergeben und eine Telefonruf zu starten. Dieses brachte uns auf die Idee die Widgets- und Live-Text-Funktionalität des Standard-Notes-Clients zu verwenden, um über Livetext erkannte Telefonnummern direkt für einen Telefon-Call zu nutzen.
Beschreibung der Lösung
Die Erstellung eines Notes-Widget aus einer Maske ist in der Notes-Hilfe beschrieben. Über ein solches Widget lässt sich ein Feld einer sich öffnende Notes-Maske mit der über Livetext identifizierte Telefonnummer befüllen. Prinzipiell muss abgewartet werden, bis das Widget das Feld befüllt hat. Dieses haben wir dann wie folgt gelöst:
Dim uidoc As NotesUIDocument
Dim callTimer As NotesTimer
Sub Postopen(Source As Notesuidocument)
Set uidoc = source
' erstelle und initialisiere Timer
Set callTimer = New NotesTimer(1, "rufe Telefonnummer an")
On Event Alarm From callTimer Call CallTimerHandler
End Sub
Sub CallTimerHandler(Source As NotesTimer)
Dim telefonnummer As String
' nur einmal ausführen, deshalb Timer gleich deaktivieren
source.Enabled = False
' Telefonnummer normalisieren
telefonnummer = NormalisiereTelefonnummer(uidoc.FieldGetText("Telefonnummer"))
Call uidoc.FieldSetText("Telefonnummer", telefonnummer)
If telefonnummer <> "" Then
Call RufeTelefonnummerAn(telefonnummer)
' und Dokument wieder schließen
Call uidoc.Document.ReplaceItemValue("SaveOptions", "0")
Call uidoc.Close
End If
End Sub
Function NormalisiereTelefonnummer(Byval telefonnummer As String) As String
' entferne Leerzeichen, /, -, ( und )
telefonnummer = Replace(telefonnummer, Split(" , /, -, (, )", ", "), "")
' entferne die 0 nach der Landesvorwahl (zumindest erst einmal für die deutsche Landesvorwahl)
If Left$(telefonnummer, 3) = "+49" And Left$(telefonnummer, 4) = "+490" Then
telefonnummer = "+49" & Mid$(telefonnummer, 5, 100)
End If
NormalisiereTelefonnummer = telefonnummer
End Function
Sub RufeTelefonnummerAn(telefonnummer As String)
Dim Phoner As Variant
If telefonnummer <> "" Then
Set Phoner = CreateObject("Phoner.CPhoner")
Phoner.MakeCall(telefonnummer)
End If
End Sub
Und siehe da, der Phoner wählt die Nummer aus dem Livetext an:
Hinweis: Der Phoner sollte schon geöffnet sein.