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>

Zurück