Integration mittels SOAP (Server-seitig) integration-via-soap-server-side

Die für die Angebotsverwaltung verfügbaren SOAP-Webservices unterscheiden sich von den in Adobe Campaign gewöhnlich verwendeten. Sie sind über die im vorangehenden Kapitel beschriebene Interaction-URL zugänglich und ermöglichen es, ein Angebot für einen spezifischen Kontakt vorzuschlagen oder zu aktualisieren.

Angebotsvorschläge offer-proposition

Für Angebotsvorschläge über SOAP muss der Befehl nms:proposition#Propose hinzugefügt werden, gefolgt von im Anschluss erläuterten Parametern:

  • targetId - Primärschlüssel des Kontakts (es kann sich um einen zusammengesetzten Schlüssel handeln).
  • maxCount - gibt die Anzahl an Angebotsvorschlägen für den Kontakt an.
  • context - erlaubt das Einfügen von Kontextdaten in das Platzierungsschema. Wenn das verwendete Schema nms:interaction lautet, sollte <empty> hinzugefügt werden.
  • categories - bezeichnet die Kategorie, der die vorgeschlagenen Angebote angehören müssen.
  • themes - bezeichnet die Themen, denen die vorgeschlagenen Angebote entsprechen müssen.
  • uuid - Wert des permanenten Adobe-Campaign-Cookies ("uuid230").
  • nlid - Wert des Adobe-Campaign-Sitzungs-Cookies ("nlid").
  • noProp - Angabe des Werts "true", wenn keine Vorschläge eingefügt werden sollen.
NOTE
targetId und maxCount sind Pflichtparameter, die Angabe der anderen ist optional.

Als Antwort auf die Abfrage gibt der SOAP-Dienst folgende Parameter zurück:

  • interactionId - Kennung der Interaktion.
  • propositions - das die Liste der Vorschläge enthaltene XML-Element. Jeder Vorschlag verfügt über eine Kennung und eine spezifische HTML-Darstellung.

Angebotsaktualisierung offer-update

Ergänzen Sie die URL mit dem Befehl nms:interaction#UpdateStatus und folgenden Parametern:

  • proposition - die die vom Angebotsmodul ausgegebene Vorschlagskennung enthaltende Zeichenfolge. Siehe Angebotsvorschläge.
  • status - Zeichenfolge, die den neuen Status des Angebots angibt. Die möglichen Werte sind in der Auflistung propositionStatus, im Schema nms:common aufgeführt. Beispielsweise entspricht die Zahl 3 werksmäßig dem Status Akzeptiert.
  • context - XML-Element, mit dem Sie Kontextdaten zum Platzierungsschema hinzufügen können. Wenn das verwendete Schema nms:interaction lautet, sollte <empty> hinzugefügt werden.

Anwendungsbeispiel eines SOAP-Aufrufs example-using-a-soap-call

Unten stehend ein Beispiel-Code eines SOAP-Aufrufs:

<%
  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