Content Rendering Module
Technische Vorstellung zu Objekten
Class OptiWebRequest
Description:
Diese Klasse enthält Funktionen für die Kommunikation mit dem SELLIGENT WebAgent. OptiWebRequest holt sich die eingehenden Parameter von dem .NET Page Object, packt es in das Xml-Dokument und sendet das Dokument zur Verarbeitung an den SELLIGENT WebAgent.
Construktoren:
OptiWebRequest kann in zweierlei Weise konstruiert werden:
public OptiWebRequest(System.Web.UI.Page iPage)
Konstruiert ein neues OptiWebRequest Objekt auf der Basis von Informationen im .NET Page Objekt. Request Variablen (POST/GET) werden automatisch der Anfrage hinzugefügt. Wenn eine ID-Variable vorhanden ist, wird sie verwendet, um das ID-Attribut zu initialisieren.
public OptiWebRequest()
Konstruiert ein leeres OptiWebRequest Objekt.
Attribute:
public String ID
Der SELLIGENT ID Code wird verwendet, um die nächste Anfrage zu generieren
public bool AutoRedirect
Dieses Merkmal aktiviert oder deaktiviert das automatische Weiterleiten, wenn eine Weiterleitungsantwort eingegangen ist. Die Voreinstellung ist ‘true‘.
public String MessagentUrl
Die URL der Messagent Backend DLL
Beispiel: http://myserver/optiext/optiextension.dll
Methoden:
public OptiWebResult Send()
Sendet die Anfrage an die SELLIGENT-backed DLL und sendet das erzeugte Ergebnis zurück. Bei einem Fehler sendet die Funktion Null zurück. Wenn ein Weiterleitung empfangen wird und AutoRedirect eingestellt ist (voreingestellt), führt das Objekt eine automatische Weiterleitung aus
Class OptiWebResult
Beschreibung
Die OptiWebResult Klasse ist intern und kann nur durch einen Aufruf an OptiWebRequest.Send() erzeugt werden.
Methode
Die Klasse OptiWebResult gibt keine Methoden an.
Attribute
publicOptiWebResultType ResultType// Mail, Page or Redirect.
publicString Html // entire html
publicString HtmlDocType // Doctype
publicString TextBody// email text version
publicString Subject// email subjectline
publicOptiAddress Reply// email reply address
publicOptiAddress To// email to address
publicString Url// url of page or email
publicOptiAddress From// email from address
publicString HtmlHead// page html header content
publicString HtmlBodyAttr// page html body attributes
publicString HtmlBody// page html body content
Alle Attribute, die verschiedene Teile der Antwort enthalten, die von SELLIGENT
.NET websites
Messagent.Net ist eine Klassenbibliothek, die zum Integrieren von SELLIGENT-Inhalt in .NET Websites verwendet werden kann. Das folgende Beispiel zeigt die Verwendung von Messagent.NET, wobei eine Renderer-Seite Schritt für Schritt erstellt wird.
Voraussetzungen: MessagentNET.dll
- Erstellen Sie eine neue ASPX Seite (myrenderer.aspx)
- Erstellen Sie einen Ordner BIN und speichern Sie dort die MessagentNET.dll
Der Dateipfad sieht dann so aus:
-
../anyfolder/myrenderer.aspx
../anyfolder/BIN/MessagentNET.dll
- Fügen Sie der Datei Anweisungen und Importe hinzu, indem Sie den folgenden Code oben auf der aspx-Seite einfügen:
<%@PageLanguage="C#"ContentType="text/html"ResponseEncoding="iso-8859-1" aspcompat="true"%>
<%@ImportNamespace="System"%>
<%@importNamespace="System.Configuration"%>
<%@importNamespace="MessagentNET"%> - Fügen Sie einen Tag für das serverseitige Script hinzu
<scriptrunat="server">
</script> - Im Script Tag fügen Sie die folgenden Variablen hinzu, um die verschiedenen Teile der HTML zu erhalten:
String incHead, incBody, incBodyAttr;
- Innerhalb des <script> Tags fügen Sie die Page_Load Methode hinzu
protectedvoidPage_Load(objectsender,EventArgs)
{
} - Innerhalb des Page_load Ereignisses fügen Sie den folgenden Code hinzu:
Hinsweis: Ersetzen Sie den Code in Rot durch Ihre eigene SELLIGENT Installations-URL.
//Check if there is a SelligentID in the URL
if(""+Request.QueryString["ID"]!="")
{
//1. new Request instance
OptiWebRequestiRequest =newOptiWebRequest(this);
//2. Set request params
iRequest.CollectDebugInfo =false;
iRequest.AutoRedirect =false;
iRequest.MessagentUrl ="http://xxxxxxxxxx/optiext/optiextension.dll";
//Replace http://xxxxxxxxx with your SELLIGENT installation url
//3. Capture and add GET and POST parameters
//GET parameters
foreach(stringvarinRequest.QueryString)
{
iRequest.Attributes[var] = Request.QueryString[var];
}
//POST parameters
foreach(stringvarinRequest.Form.AllKeys)
{
iRequest.Attributes[var] = Request.Form[var];
}
//3. new Response instance and assign request.send() to it
OptiWebResultm_WebResult = iRequest.Send();
//4. Setting our variables
incHead = m_WebResult.HtmlHead;
//check if we should redirect
if(m_WebResult.ResultType ==OptiWebResult.OptiWebResultType.Redirect)
{
//write javascript redirect to page
incBody ="<script language=\"javascript\" type=\"text/javascript\">\n\tdocument.location = \""+ m_WebResult.Url +"\";\n</scr"+"ipt>";
}
else
{
//write content to page
incBody = m_WebResult.HtmlBody;
incBodyAttr =" "+ m_WebResult.HtmlBodyAttr;
}
}
else
{
//no ID found error
incHead ="";
incBody ="Error - No ID provided";
incBodyAttr ="";
} - Erstellen Sie eine HTML und verwenden Sie die zuvor erzeugten Variablen
Das ist ein leeres Beispiel für eine Content Renderer Seite; normalerweise ist das eine Seite in Ihrem CMS, in der bereits alle CSS und Voreinstellungen enthalten sind
<html>
<head>
<%=incHead%>
</head>
<body<%=incBodyAttr%>>
<!-- put header/navigation here -->
<%=incBody%>
<!-- put footer/navigation here -->
</body>
</html>
Das Ergebnis der oben genannten Schritte sieht wie folgt aus:
<%@PageLanguage="C#"ContentType="text/html"ResponseEncoding="iso-8859-1" aspcompat="true"%>
<%@ImportNamespace="System"%>
<%@importNamespace="System.Configuration"%>
<%@importNamespace="MessagentNET"%>
<scriptrunat="server">
//Vars used in the html with content from SELLIGENT
StringincHead, incBody, incBodyAttr;
///<summary>
///Page load event
///</summary>
///<param name="sender"></param>
///<param name="e"></param>
protected void Page_Load(object sender,EventArgse)
{
//Check if there is an SELLIGENT ID in the querystring
if(""+Request.QueryString["ID"]!="")
{
//1. new Request instance
OptiWebRequestiRequest = newOptiWebRequest(this);
//2. Set request params
iRequest.CollectDebugInfo = false;
iRequest.AutoRedirect= false;
iRequest.MessagentUrl="http://xxxxxxxxxx/optiext/optiextension.dll";
//3. Capture and add GET and POST parameters
foreach (string var in Request.QueryString)
{
iRequest.Attributes[var] = Request.QueryString[var];
}
foreach (string var in Request.Form.AllKeys)
{
iRequest.Attributes[var] = Request.Form[var];
}
//4. new Response instance with request.send output
OptiWebResultm_WebResult = iRequest.Send();
//5. Setting our vars
incHead = m_WebResult.HtmlHead;
//check if we should redirect
if (m_WebResult.ResultType ==OptiWebResult.OptiWebResultType.Redirect)
{
//write javascript redirect to page
incBody ="<script language=\"javascript\" type=\"text/javascript\">\n\tdocument.location = \""+ m_WebResult.Url +"\";\n</scr"+"ipt>";
}
else
{
//write content to page
incBody = m_WebResult.HtmlBody;
incBodyAttr =" "+ m_WebResult.HtmlBodyAttr;
}
}
else
{
//no ID found error
incHead ="";
incBody ="Error - No ID provided";
incBodyAttr ="";
}
}
</script>
<html>
<head>
<%=incHead%>
</head>
<body<%=incBodyAttr%>>
<h1>HEADER</H1>
<hr>
<%=incBody%>
<h1>FOOTER</H1>
<hr>
</body>
</html>
JSP/JAVA websites
- Erstellen Sie eine aspx-Seite, die Inhaltsanfragen von JSP/JAVA bearbeiten kann. Legen Sie dazu die Datei GetMessage4jsp.aspx in den optiext-Ordner Ihrer SELLIGENT Installation Legen Sie die MessagentNET.dll in den Ordner bin, wenn sie nicht bereits dort liegt.
-
2. Öffnen Sie die Datei GetMessage4jsp.aspx und ändern Sie diese Zeile, um auf Ihre optiextension.dll zu verweisen iRequest.MessagentUrl = "http://xxxxxxxxxx/optiext/optiextension.dll";
The content of the file GetMessage4jsp.aspx is as following
<?xmlversion="1.0"encoding="iso-8859-1"?>
<%@PageLanguage="C#"ContentType="text/html"ResponseEncoding="iso-8859-1"aspcompat="true"%>
<%@ImportNamespace="System"%>
<%@importNamespace="System.Configuration"%>
<%@importNamespace="MessagentNET"%>
<scriptrunat="server">
StringincHead, incBody, incBodyAttr;
protectedvoidPage_Load(objectsender,EventArgse)
{
if(""+Request.QueryString["ID"]!="")
{
OptiWebRequestiRequest =newOptiWebRequest(this);
iRequest.CollectDebugInfo =false;
iRequest.AutoRedirect =false;
iRequest.MessagentUrl="http://xxxxxxxxxx/optiext/optiextension.dll";
foreach(stringvarinRequest.QueryString)
{
iRequest.Attributes[var] = Request.QueryString[var];
}
foreach(stringvarinRequest.Form.AllKeys)
{
iRequest.Attributes[var] = Request.Form[var];
}
OptiWebResultm_WebResult = iRequest.Send();
incHead = m_WebResult.HtmlHead;
if(m_WebResult.ResultType==OptiWebResult.OptiWebResultType.Redirect)
{
incBody="<script language=\"javascript\" type=\"text/javascript\">\n\tdocument.location = \""+ m_WebResult.Url +"\";\n</scr"+"ipt>";
}
else{
incBody = m_WebResult.HtmlBody;
incBodyAttr = m_WebResult.HtmlBodyAttr;
}
else
{
incHead ="";
incBody ="Error - No ID provided";
incBodyAttr ="";
}
}
</script>
<message>
<HEAD><![CDATA[<%=incHead%>]]></HEAD>
<BODY><![CDATA[<%=incBody%>]]></BODY>
<BODY_ATTR><![CDATA[<%=incBodyAttr%>]]></BODY_ATTR>
</message> - Erstellen Sie eine neue JSP-Seite als Content Renderer Seite (myrenderer.jsp)
- Fügen Sie Seitenanweisungen auf der myrenderer.jsp-Seite hinzu
<%@pagecontentType="text/html;charset=iso-8859-1"language="java" import="javax.xml.parsers.*,org.w3c.dom.*"errorPage=""%>
-
Fügen Sie die Variable hinzu, um die xml und Helper-Methode zu erhalten, um einen bestimmten Wert von der xml zu bekommen
<%!
// 1. Create Document for XML
Documentdoc;
// 2. Create Method to get a specific value from the XML
StringgetXMLValue(Stringname) {
NodeListnlist=doc.getElementsByTagName(name);
Stringvalue = nlist.item(0).getFirstChild().getNodeValue();
return value;
}
%> -
Fügen Sie den Aufruf zur Seite GetMessage4jsp.aspx hinzu, indem Sie den folgenden Code einfügen. Beachten Sie, dass Sie die rote URL ändern müssen, damit auf Ihre eigene SELLIGENT-Installation verwiesen wird..
<%
// 1. Get SIM ID from querystring
StringID = request.getParameter("ID");
// 2. Add GET and POST parameters
Stringparam = "";
java.util.Enumeration<String> params = request.getParameterNames();
while(params.hasMoreElements()) {
StringparamName = (String) params.nextElement();
if(!paramName.toUpperCase().equals("ID")) {
StringparamValue = request.getParameter(paramName);
if(paramValue != "" && paramValue != null) {
param = param + "&" + paramName + "=" + paramValue;
}
}
}
// 3. Set the url to your GetMessage4jsp.aspx file
Stringxmlfile ="http://messagent.xxxx.com/optiext/GetMessage4jsp.aspx?ID=" +ID+param;
// 4. Create new Instance of DocumentBuilderFactory
DocumentBuilderFactorydbf=DocumentBuilderFactory.newInstance();
// 5. New Instance of DocumentBuilder
DocumentBuilderdb=dbf.newDocumentBuilder();
// 6. Get the xml content and put in doc variable
doc=db.parse(xmlfile);
%> -
Erstellen Sie die html und füllen Sie sie mit dem dynamischen Inhalt
Das Ergebnis der genannten Schritte sieht wie folgt aus:
<%@pagecontentType="text/html; charset=iso-8859-1"language="java"import="javax.xml.parsers.*,org.w3c.dom.*"errorPage=""%>
<%!
// 1. Create Document for XML received
Document doc;
// 2. Create Method to get a specific value from the XML
String getXMLValue(String name) {
NodeList nlist=doc.getElementsByTagName(name);
String value = nlist.item(0).getFirstChild().getNodeValue();
return value;
}
%>
<%
// 1. Get the SIM ID from querystring
String ID = request.getParameter("ID");
// 2. Add GET and POST parameters
String param = "";
java.util.Enumeration<String> params = request.getParameterNames();
while (params.hasMoreElements()) {
String paramName = (String) params.nextElement();
if (!paramName.toUpperCase().equals("ID")) {
String paramValue = request.getParameter(paramName);
if (paramValue != "" && paramValue != null) {
param = param + "&" + paramName + "=" + paramValue;
}
}
}
// 3. Set the url to your GetMessage4jsp.aspx
String xmlfile =http://messagent.xxxx.com/optiext/GetMessage4jsp.aspx?ID=+ID+param;
// 4. Create new Instance of DocumentBuilderFactory
DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
// 5. New Instance of DocumentBuilder
DocumentBuilder db=dbf.newDocumentBuilder();
// 6. Get the xml content and put in doc var
doc=db.parse(xmlfile);
%>
<!DOCTYPEhtmlPUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<head>
<%=getXMLValue("HEAD")%>
</head>
<body<%=getXMLValue("BODY_ATTR")%>>
<!-- PUT HTML -->
<%=getXMLValue("BODY")%>
<!-- PUT HTML -->
</body>
</html>
PHP website pages
-
Erstellen Sie eine aspx-Seite, die Inhaltsanfragen von PHP bearbeiten kann:
Legen Sie die GetMessage4php.aspx im optiext-Ordner Ihrer SELLIGENT-Installation ab.
Legen Sie die MessagentNET.dll im Ordner bin ab. - Als nächstes öffnen Sie die Datei GetMessage4php.aspx und ändern Sie die Zeile, um auf unsere optiextension.dll zu verweisen iRequest.MessagentUrl = "http://xxxxxxxxxx/optiext/optiextension.dll";
GetMessage4php.aspx
<%@PageLanguage="C#"ContentType="text/html"ResponseEncoding="iso-8859-1"aspcompat="true"%>
<%@ImportNamespace="System"%>
<%@importNamespace="System.Configuration"%>
<%@importNamespace="MessagentNET"%>
<scriptrunat="server">
StringincHead, incBody, incBodyAttr;
protectedvoidPage_Load(objectsender,EventArgse)
{
if(""+Request.QueryString["ID"]!="")
{
OptiWebRequestiRequest =newOptiWebRequest(this);
iRequest.CollectDebugInfo =false;
iRequest.AutoRedirect =false;
iRequest.MessagentUrl ="http://xxxxxxxxxx/optiext/optiextension.dll";
foreach(stringvar in Request.QueryString)
{
iRequest.Attributes[var] =Request.QueryString[var];
}
foreach(stringvar in Request.Form.AllKeys)
{
iRequest.Attributes[var] =Request.Form[var];
}
OptiWebResultm_WebResult = iRequest.Send();
incHead = m_WebResult.HtmlHead;
if(m_WebResult.ResultType==OptiWebResult.OptiWebResultType.Redirect)
{
incBody ="<script language=\"javascript\" type=\"text/javascript\">\n\tdocument.location = \""+ m_WebResult.Url +"\";\n</scr"+"ipt>";
}
else
{
incBody = m_WebResult.HtmlBody;
incBodyAttr = m_WebResult.HtmlBodyAttr;
}
}
else
{
incHead ="";
incBody ="Error - No ID provided";
incBodyAttr ="";
}
}
</script>
<?xmlversion="1.0"encoding="iso-8859-1"?>
<message>
<HEAD><![CDATA[<%=incHead%>]]></HEAD>
<BODY><![CDATA[<%=incBody%>]]></BODY>
<BODY_ATTR><![CDATA[<%=incBodyAttr%>]]></BODY_ATTR>
</message> - Erstellen Sie einen PHP Content Renderer und geben Sie ihm den Namen myrenderer.jsp
- Öffnen Sie den php-Tag
<?php?>
-
Rufen Sie im php-Tag die Parameter für POST und GET auf
// 1. Get the SIM ID from the querystring
$parameters ="";
// 2. Get POST params
foreach($_POST as $name => $value)
{
if(strtoupper($name)<>"ID")
{
$parameters = $parameters . "&" . $name . "=" . urlencode($value);
}
}
// 3. Get GET params,
foreach($_GET as $name => $value)
{
if(strtoupper($name)<>"ID")
{
$parameters = $parameters . "&" . $name . "=" . urlencode($value);
}
} -
Rufen Sie im php-Tag die Seite GetMessage4php.aspx auf und ändern Sie die rote URL, um auf Ihre eigene SIM-Installation zu verweisen
// 4. URL to your GetMessage4php -> change xxxxx to your domain
$xmldoc ="http://messagent.xxxx.com/optiext/GetMessage4php.aspx?ID=".$_GET["ID"].$parameters;
// 5. Encoding
$myXMLString = file_get_contents($xmldoc);
$myXMLString = utf8_encode($myXMLString);
// 6. New Instance of DOMDocument
$doc = new DOMDocument('1.0', 'UTF-8');
// 7. Load results into doc object
$doc->loadXML($myXMLString); -
Weisen Sie im php-Tag Variable zu, die in HTML zu verwenden sind
// 8. Settings parameters
$messagent_head = $doc->getElementsByTagName("HEAD");
$messagent_bodyattr = $doc->getElementsByTagName("BODY_ATTR");
$messagent_body = $doc->getElementsByTagName("BODY");
// 9. Settings parameters to use in HTML
$msgHeadStr = $messagent_head->item(0)->nodeValue;
$msgBodyAttrStr = $messagent_bodyattr->item(0)->nodeValue;
$msgBodyStr = $messagent_body->item(0)->nodeValue;
?> -
Erzeugen Sie mit den Variablen die HTML
<!DOCTYPEhtmlPUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<head>
<?php echo $msgHeadStr; ?>
</head>
<body<?php echo $msgBodyAttrStr ;?>>
<?php echo $msgBodyStr ; ?>
</body>
</html>Das Endergebnis der oben genannten Schritte sieht wie folgt aus
<?php
// 1. Get the SIM ID from querystring
$parameters="";
// 2. Get POST params
foreach($_POST as $name => $value)
{
if(strtoupper($name)<>"ID")
{
$parameters = $parameters . "&" . $name . "=" . urlencode($value);
}
}
// 3. Get GET params
foreach($_GET as $name => $value)
{
if(strtoupper($name)<>"ID")
{
$parameters = $parameters . "&" . $name . "=" . urlencode($value);
}
}
// 4. URL to your GetMessage4php -> change xxxxx to your domain
$xmldoc ="http://messagent.xxxx.com/optiext/GetMessage4php.aspx?ID=".$_GET["ID"].$parameters;
// 5. Encoding
$myXMLString = file_get_contents($xmldoc);
$myXMLString = utf8_encode($myXMLString);
// 6. New Instance of DOMDocument
$doc = new DOMDocument('1.0', 'UTF-8');
// 7. Load results into doc object
$doc->loadXML($myXMLString);
// 8. Settings parameters
$messagent_head = $doc->getElementsByTagName("HEAD");
$messagent_bodyattr = $doc->getElementsByTagName("BODY_ATTR");
$messagent_body = $doc->getElementsByTagName("BODY");
// 9. Settings parameters to use in HTML
$msgHeadStr = $messagent_head->item(0)->nodeValue;
$msgBodyAttrStr = $messagent_bodyattr->item(0)->nodeValue;
$msgBodyStr = $messagent_body->item(0)->nodeValue;
?>
<!DOCTYPEhtmlPUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<head>
<?php echo $msgHeadStr; ?>
</head>
<body <?php echo $msgBodyAttrStr ;?>>
<?php echo $msgBodyStr ; ?>
</body>
</html>
