v7
S’applique uniquement à Campaign Classic v7

Intégration via SOAP (côté serveur) integration-via-soap-server-side

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 offer-proposition

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.
NOTE
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 offer-update

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: type chaîne, il spécifie le nouvel état de l’offre. Les valeurs possibles sont répertoriées dans la variable propositionStatus enumeration, dans la variable nms:common schéma. Par exemple, d'usine, le nombre 3 correspond au Acceptée statut.
  • 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 example-using-a-soap-call

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 )
  {
  }
  %>
recommendation-more-help
601d79c3-e613-4db3-889a-ae959cd9e3e1