XML Fehler bei Phone Service

ThxDex

Neuer User
Mitglied seit
9 Jan 2008
Beiträge
11
Punkte für Reaktionen
0
Punkte
0
Hallo Leute,

bin neu hier im Forum. Seit ca. 3 Jahren Administrator von einer grösseren Cisco IP Telephonie Umgebung. Ich hoffe ich kann gelgentlich helfen und ihr helft mir :)

Hab folgendes Problem. Schon länger haben wir den "Weather" Phone Service der beim Developer Kit bei den Beispielen dabei ist auf unseren 7960/7961 in Verwendung (leicht angepasst).
Plötztlich funktioniert das nicht mehr, das Telefon meldet: XML-Fehler 4 Analysefehler auf englisch heissts dann XML Error 4 Parse Error.

Ich hab keine Ahnung von Programmieren. Ich kann nur sagen das ich die Files nicht verändert habe. An was kann das liegen. Hab schon den Server auf dem die Phone Services laufen gebootet etc. Tel. haben schon länger die gleiche Firmware, an dem klanns auch nicht liegen.

Danke schon mal und Gruss
Ingo
 
Da kommen vermutlich Daten vom Wetterservice, mit dem das Telefon nix mehr anfangen kann. Im einfachsten Fall z.B. Sonderzeichen, die der Zeichensatz des Telefons nicht kennt.

Um den Fehler zu finden, mußt Du Dir den XML Quelltext anschauen, der da auf dem Telefon landet.
 
Hallo,

unten mal der Code, der bei weather.yahoo.com die Daten saugt.
Das kommt von den Amis, da sind keine Sonderzeichen drinn. Das geschiet vermutlich mit der Zeile: Inet1.GetURL("http://xml.weather.yahoo.com/forecastrss?p=AUXX0025&u=c");

Ich teste mal ohne den Wetterkram und probiere nur etwas anzuzeigen. Dann müsste ich wissen ob yahoo was geändert hat.

Danke, Ingo

Code:
<%@ Language=JavaScript%>
<%

//Get Data
function GetTempData(UrlResult,begStr,endStr)
{
var Data="";
var BeginIndex=0;
var EndIndex=0;
Result=new String(UrlResult);
BeginIndex=Result.indexOf(begStr,0)+begStr.length;
EndIndex=Result.indexOf(endStr,BeginIndex);

Data=Result.substr(BeginIndex,EndIndex-BeginIndex);
Result="";
return Data;
}

//Get Data with start pint
function GetTempData2(UrlResult,StartPoint,begStr,endStr)
{
var Data="";
var BeginIndex=0;
var EndIndex=0;
var StartIndex;
Result=new String(UrlResult);
StartIndex=Result.indexOf(StartPoint,0)+StartPoint.length;
BeginIndex=Result.indexOf(begStr,StartIndex)+begStr.length;
EndIndex=Result.indexOf(endStr,BeginIndex);

Data=Result.substr(BeginIndex,EndIndex-BeginIndex);
Result="";
return Data;
}


var serverIP = Request.ServerVariables("LOCAL_ADDR");
Response.ContentType = "text/xml";
Response.AddHeader("Refresh", "300;");
Response.Buffer = true;

var txt = "";
Inet1 = new ActiveXObject("CiscoURLProxy.URLGrabber");
var rawdata = Inet1.GetURL("http://xml.weather.yahoo.com/forecastrss?p=AUXX0025&u=c");
var TempDate=GetTempData(rawdata,"<lastBuildDate>","</lastBuildDate>");
var TempCondition=GetTempData(rawdata,"<yweather:condition text=\"","\" code=\"");
var TempTemp=GetTempData(rawdata,"temp=\"","\" date=\"");
var TempSunrise=GetTempData(rawdata,"<yweather:astronomy sunrise=\"","\" sunset=\"");
var TempSunset=GetTempData(rawdata,"\" sunset=\"","\"");
	
		Response.Write("<CiscoIPPhoneText>\r\n");
		Response.Write("<Title>Weather for Vienna</Title>\r\n");
		Response.Write("<Text>Temperatur: "+TempTemp+" Degree Celsius\r\n");
		Response.Write("Condition: "+TempCondition+"\r\n");
		Response.Write("IPT Prefix 8851 + userextension\r\n");
		Response.Write("IPT Implementation complete");
		Response.Write("</Text>");
		Response.Write("</CiscoIPPhoneText>\r\n");
		
		Inet1 = "";
	



Response.Flush();
/*Response.End();
Session.Abandon();
*/

%>
 
Zuletzt bearbeitet:
In dem Bereich mit den "Response.Write" solltest Du mal Stück für Stück rausnehmen, um zu sehen, bei welchem Eintrag der Fehler auftritt.

Übrigens sind in Deinem Listing ein paar Leerzeichen, wo keine hingehören. (z.B. "astrono my" "condi tion") und das teilweise auch in Variablennamen. Keine Ahnung ob die wirklich in Deinem Quelltext so drinstehen oder jetzt beim Reinkopieren entstanden sind.

Bitte setze Dein Listing oben in CODE Tags, damit das besser zu lesen wird. Danke.
 
Besten Dank für die Hilfe.
Es ist wirklich an div. Leerzeichen gelgen. Yahoo hat was geändert und hat teilweise jetzt 3 statt 2 Leerzeichen eingefügt. Ich habs nach langem herumsuchen gefunden. Z.B. hier: temp=\"","\" date=\""); sind vor dem date jetzt 2 Leerzeichen früher nur 1.

Gruss Ingo ;)

Hier der geändert Code:
Code:
var TempDate=GetTempData(rawdata,"<lastBuildDate>","</lastBuildDate>");
var TempCondition=GetTempData(rawdata,"<yweather:condition  text=\"","\"  code=\"");
var TempTemp=GetTempData(rawdata,"temp=\"","\"  date=\"");
var TempSunrise=GetTempData(rawdata,"<yweather:astronomy sunrise=\"","\"");
var TempSunset=GetTempData(rawdata,"\" sunset=\"","\"");
	
Response.Write("<CiscoIPPhoneText>\r\n");
Response.Write("<Title>" + Title + "</Title>\r\n");
Response.Write("<Text>Temperatur: "+TempTemp+" Degree Celsius\r\n");
Response.Write("Condition: "+TempCondition+"\r\n");
Response.Write("IPT Prefix 8852 + userextension\r\n");
Response.Write("IPT Implementation complete");
Response.Write("</Text>");
Response.Write("</CiscoIPPhoneText>\r\n");
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.