Show Menu
SUJETS×

Intégration via SOAP (côté serveur)

Les services web SOAP fournis pour la gestion des offres sont différents de ceux habituellement utilisés dans Adobe Campaign. Ils sont accessibles via l'URL d'interaction décrite dans la section précédente et permettent de proposer ou mettre à jour des offres pour un contact donné.

Proposition d'offres

Pour une proposition d'offres via SOAP, vous devez ajouter la commande nms:proposition#Propose , suivie des paramètres suivants :
  • targetId : clé primaire du destinataire (il peut s'agir d'une clé composite).
  • maxCount : indique le nombre de propositions d'offre pour le contact.
  • context  : vous permet d’ajouter des informations contextuelles dans le schéma d’espace. Si le schéma utilisé est nms:interaction , <empty> doit être ajouté.
  • categories : indique la ou les catégories auxquelles doivent appartenir la ou les offres proposées.
  • themes : indique la ou les thèmes auxquelles doivent appartenir la ou les offres proposées.
  • uuid : valeur du cookie permanent Adobe Campaign ("uuid230").
  • nlid : valeur du cookie de session Adobe Campaign ("nlid").
  • noProp : utilisez la valeur "true" pour désactiver l'insertion de propositions.
Les paramètres targetId et maxCount sont obligatoires. Les autres sont optionnels.
En réponse à la requête, le service SOAP renverra les paramètres suivants :
  • interactionId : id de l'interaction.
  • propositions : élément XML, contient la liste des propositions, chacune ayant un id et une représentation HTML propre.

Mise à jour d'une offre

Ajoutez la commande nms:interaction#UpdateStatus dans l'URL, puis les paramètres suivants :
  • proposition  : chaîne de caractères, contient l'identifiant de la proposition donnée en sortie lors d'un appel au moteur. Voir Proposition d'offres .
  • status : nombre, indique le nouveau statut de l'offre. Les valeurs possibles sont listées dans l'énumération propositionStatus , dans le schéma nms:common . Par exemple, d'usine, le nombre 3 correspond au statut Acceptée .
  • Context  : élément XML, vous permet d’ajouter des informations contextuelles dans le schéma d’espace. Si le schéma utilisé est nms:interaction , <empty> doit être ajouté.

Exemple d'utilisation d'un appel SOAP

Voici un exemple de code pour un appel SOAP :
<%
  var space = request.parameters.sp
  var cnx = new HttpSoapConnection(
    "https://" + request.serverName + ":" + request.serverPort + "/interaction/" + env + "/" + space,
    "utf-8",
    HttpSoapConnection.SOAP_12)
  var session = new SoapService(cnx, "nms:interaction")
  var action = request.parameters.a
  if( action == undefined )
    action = 'propose'

  try
  {
    switch( action )
    {
    case "update":
      var proposition = request.parameters.p
      var status      = request.parameters.st
      session.addMethod("UpdateStatus", "nms:interaction#UpdateStatus",
       ["proposition", "string",
        "status",      "string",
        "context",     "NLElement"],
       [])
      session.UpdateStatus(proposition, status, <undef/>)
      var redirect = request.parameters.r
      if( redirect != undefined )
        response.sendRedirect(redirect)
      break;

    case "propose":
      var count = request.parameters.n
      var target = request.parameters.t
      var categorie = request.parameters.c
      var theme = request.parameters.th
      var layout = request.parameters.l
      if( count == undefined )
        count = 1
      session.addMethod("Propose", "nms:proposition#Propose",
       ["targetId",      "string",
        "maxCount",      "string",
         "categories",    "string",
         "themes",        "string",
        "context",       "NLElement"],
       ["interactionId", "string",
        "propositions",  "NLElement"])
      response.setContentType("text/html")
      var result = session.Propose(target, count, category, theme, <empty/>)
      var props = result[1]
  %><table><tr><%
      for each( var propHtml in props.proposition.*.mdSource )
      {
        %><td><%=propHtml%></td><%
      }
  %></tr></table><%
      break;
    }
  }
  catch( e )
  {
  }
  %>