Modules du rendu de contenu
Introduction technqiue des objets
Classe OptiWebRequest
Description:
Cette classe fournit des fonctions pour gérer la communication entre SELLIGENT et l’agent Web.
OptiWebRequest collecte les paramètres en provenance de la page d’objet .net, créer le paquet dans le document XML et envoie celui-ci à l’agent Web pour y être traité.
Constructeurs
L’objet OptiWebRequest peut être construit de deux manières:
public OptiWebRequest(System.Web.UI.Page iPage)
Construit un nouvel objet OptiWebRequest basé sur les informations dans la page d’objet .Net. Les variables de requêtes (GET / POST) seront automatiquement ajoutées à la requête. Si une variable ID est disponible, elle sera utilisée pour initialisér l’attribut ID.
public OptiWebRequest()
Construit un objet OptiWebRequest vide.
Attributs
public String ID
Le code ID SELLIGENT utilisé pour générer la requête suivante
public bool AutoRedirect
Cette propriété active ou désactive la redirection automatique lorsqu’une réponse de type « redirection » est reçue. La valeur par défaut est « vraie ».
public String MessagentUrl
URL de la DLL back-end SELLIGENT..
Eg.http://myserver/optiext/optiextension.dll
Méthodes
public OptiWebResult Send()
Envoie la requête à la DLL back-end SELLIGENT et renvoie le résultat généré. Si une erreur est survenue, la fonction renvoie une valeur nulle. Si une redirection est reçue et que la propriété « AutoRedirect » est définie l’objet exécutera une redirection automatique
Class OptiWebResult
Description
La classe OptiWebResult est interne et peut seulement être instanciée par un appel à la méthode OptiWebRequest.Send().
Méthodes
La classe OptiWebResult ne possède pas de méthode.
Attributs
publicOptiWebResultType ResultType// Mail, Page or Redirect.
publicString Html // html en entier
publicString HtmlDocType // Doctype
publicString TextBody// version texte de l'email
publicString Subject// sujet de l'email
publicOptiAddress Reply// adresse de réponse de l'email
publicOptiAddress To// adresse de destination de l'email
publicString Url// url de la page ou de l'email
publicOptiAddress From// adresse expéditrice de l'email
publicString HtmlHead// header html de la page
publicString HtmlBodyAttr// attributs du body de la page html
publicString HtmlBody// contenu du html body
Liste de tous les attributs contenant les différentes parties de la réponse générée par SELLIGENT.
Site internet .NET
Messagent.Net est une libraire de classes qui peut être utilisée lors de l’intégration de contenu SELLIGENT dans un site internet .Net. L’exemple ci-dessous illustre l’utilisation de Message.Net lors du design étape par étape d’une page de rendu
Prérequis: MessagentNET.dll
- Création d’une nouvelle page ASPX (myrenderer.aspx)
-
Création d’un répertoire BIN et stockage de la DLL MessagentNET.dll dedans. La structure de fichier est la suivante :
../anyfolder/myrenderer.aspx
../anyfolder/BIN/MessagentNET.dll
- Ajout des directives et les imports de fichiers en faisant un copier / coller du code suivant au début de la page ASPX:
<%@PageLanguage="C#"ContentType="text/html"ResponseEncoding="iso-8859-1" aspcompat="true"%>
<%@ImportNamespace="System"%>
<%@importNamespace="System.Configuration"%>
<%@importNamespace="MessagentNET"%> - Ajout d’un tag pour le scripting côté serveur
<scriptrunat="server">
</script> - Dans le tag “Script”, ajout des variables suivantes pour obtenir les différentes parties HTML:
String incHead, incBody, incBodyAttr;
- Toujours dans le tag “Script” ajout de la méthode « Page_Load »
protectedvoidPage_Load(objectsender,EventArgse)
{
} - A l’intérieur de l’évènement “Page_Load”, ajout du code suivant:
Le code en rouge doit être remplacé par l’URL d’installation de l’environnement Selligent
//Check if there is aSelligentID 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 ="";
} - Création d’un HTML et utilisation des variables déclarées précédemment.
Voici un exemple sans contenu d’une page de rendu, en temps normal il s’agirait d’une page du CMS avec le CSS et le contenu par défaut pré-déclaré.
<html>
<head>
<%=incHead%>
</head>
<body<%=incBodyAttr%>>
<!-- put header/navigation here -->
<%=incBody%>
<!-- put footer/navigation here -->
</body>
</html>
Le résultat des configurations ci-dessus se présent comme suit:
<%@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>
Sites Internet JSP/JAVA
- Créez une page ASPX qui prendra en charge les requêtes de contenu venant de JSP / Java. Ensuite, placez le fichier GetMessage4jsp.aspx dans le répertoire « optiext » de l’installation SELLIGENT. Placez ensuite la dll MessagentNet.dll dans le dossier « bin » existant.
- Ouvrez le fichier GetMessage4jsp.aspx et éditez la ligne suivante pour la faire pointer vers la DLL optiextension.dll : 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> - Créez une nouvelle page JSP en tant que page de rendu de contenu (myrenderer.jsp)
- Ajoutez les directives de pages dans myrenderer.jsp
<%@pagecontentType="text/html;charset=iso-8859-1"language="java" import="javax.xml.parsers.*,org.w3c.dom.*"errorPage=""%>
-
Ajoutez les variables pour contenir le XML et les méthodes d’aide pour récupérer les valeurs venant du XML.
<%!
// 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;
}
%> -
Ajoutez un appel vers la page GetMessage4jsp.aspx en faisant un copier / coller du code ci-dessous sans oublier de modifier l’URL pointant vers l’installation SELLIGENT..
<%
// 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);
%> -
Construisez l’HTML et remplissez le contenu dynamique
Voici le résultat obtenu après exécution des étapes ci-dessus:
<%@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>
Sites internet PHP
-
Créez une page ASPX qui va prendre en charge le contenu des requêtes venant de PHP
Placez le fichier GetMessage4php.aspx dans le répertoire “optiext” de l’installation SELLIGENT.
Placez la DLL MessagentNet.dll dans le répertoire “bin”. - Ensuite, ouvrez le fichier GetMessage4php.aspx et éditez la ligne correspondant à l’installation SELLIGENT"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> - Créez une page de rendu de contenu PHP et appelez-là myrenderer.php
- Ouvrez une balise PHP
<?php?>
-
A l’intérieur de cette balise, récupérez les paramètres GET et POST
// 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);
}
} -
Toujours dans la balise PHP, faites un appel à la page GetMessage4php.aspx et modifiez l’URL pointant vers l’installation SELLIGENT
// 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); -
Assignez les variables à utiliser pour l’HTML
// 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;
?> -
Créez l’HTML en utilisant ces variables
<!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>Voici le résultat obtenu après exécution des étapes ci-dessus
<?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>