Anpassen von "Asterisk Voicemail for IPhone"

201004-customizing-ast4iphone-iphone-ipad-asterisk.gifAn dieser Stelle hatte ich beschreiben wie man das ganze installiert. Es tut auch das was soll. Man kann sich anmelden und bekommt seine Nachrichten angezeigt. Man kann verschieben und löschen. So weit so gut. Das Szenario in unserem Haushalt sieht nur etwas anders aus.

Bei uns gibt es auf dem Asterisk verschiedene Mailboxen die von allen abgehört werden können. Spezielle Anmeldung ist nicht erforderlich.  Ich möchte alle Nachrichten für alle Mailboxen mit dem Mailboxnamen angezeigt bekommen.

Mit folgenden Einschränkungen ist das Ziel erreicht: Kein löschen/verschieben/abhöhren der Nachrichten oder Rückrufen des Anrufers. Wegen des fehlenden Logins musste ich das erstmal abschalten.  Mailboxennummern und -namen sind im PHP code fest verdrahtet.

Vielleicht gehe ich später mal hin und versuche das wieder einzubauen. (ist aber unwahrscheinlich). Folgende Schritte habe ich durchgeführt.

Abschalten des logins

In index.php login_success auf true

    $login_message = "";
-   $login_success = false;
+   $login_success = true;
    $p_mailbox = ""; if (isset($_POST['mailbox'])) $p_mailbox = $_POST['mailbox'];

Nachrichten selektieren und mit Mailboxnahmen darstellen

Jetzt sind wir zwar angemeldet aber das Script weiss nicht welche Mailboxen. In der Main.php wird dazu der Aufrufe von GetMessagearray für jede Mailbox mit einem hartverdrahteten Mailboxnummer kopiert und es werden jeweils eine neue variable für Inbox und Saved Nachrichten eingefügt

     // Get messages (into an array)
-    $arr_messages_inbox = GetMessageArray("INBOX", $s_mailbox);
-    $arr_messages_old = GetMessageArray("Old", $s_mailbox);
-    $smarty->assign('messages_inbox', $arr_messages_inbox);
-    $smarty->assign('messages_old', $arr_messages_old);
+    $arr_messages_inbox1 = GetMessageArray("INBOX", "Mailbox1");
+    $arr_messages_inbox2 = GetMessageArray("INBOX", "Mailbox2");
+    $arr_messages_old1 = GetMessageArray("Old", "Mailbox1");
+    $arr_messages_old2 = GetMessageArray("Old", "Mailbox2");
+    $arr_messages_old = $arr_messages_old1 ;
+    $smarty->assign('messages_inbox1', $arr_messages_inbox1);
+    $smarty->assign('messages_old1', $arr_messages_old1);
+    $smarty->assign('messages_inbox2', $arr_messages_inbox2);
+    $smarty->assign('messages_old2', $arr_messages_old2);

   
Diese Daten werden dann im Template smarty/templates/main.tpl verwendet. Und zwar wird dort die Schleife mit zur Darstellung der einzelnen Nachrichten angepasst

z.B.

+{foreach from=$messages_inbox1 key=myId item=i}
+  <li id="li_old_{$i.file}"><img align="absmiddle" style="border:0px;width:16px;height:16px;padding-left:8px;padding-right:8px;margin-bottom:4px;" src="images/icons/email.png" /><span style="color:darkblue;">Mailbox2</span><br />
+<span style="padding-left:31px;">{$i.calleridnumber}</span><br/>
+<span style="padding-left:31px;">{$i.duration} Sekunden</span><br/>
+<span style="padding-left:31px;">{$i.datetimebetter}</span></a></li>
+{/foreach}


Hier kann man auch sehen das der Link auf die normalen Detailinfos entfernt worden ist und ich die Detailinformationen direkt hier eingebaut habe.

Messageseite als Startseite.

Momentan muss ich erst auf Messages drücken um dahin zukommen. Da ich den ganzen Rest nicht brauche muss ich jetzt noch die Message Seite als Startseite einrichten . Die Hauptstartseite brauche ich nicht mehr.

in smarty/templates/main.tpl

-    <ul id="home" title="Main" selected="true">
+    <ul id="home" title="Main" selected="false">

und

-    <ul id="messages" title="Messages">
+    <ul id="messages" title="Messages" selected="true">

Das wars schon.