透過SOAP整合(伺服器端) integration-via-soap-server-side
為Offer Management提供的SOAP Web服務與Adobe Campaign中通常使用的服務不同。 可透過上一節所述的互動URL存取優惠方案,並讓您提供或更新指定聯絡人的優惠方案。
產品建議提議 offer-proposition
若要透過SOAP提出優惠方案,請新增 nms:proposition#Propose 命令,後面接著下列引數:
- targetId:收件者的主索引鍵(可以是複合索引鍵)。
 - maxCount:指定連絡人的優惠方案主張數目。
 - 內容:可讓您在空間結構描述中新增內容資訊。 如果使用的結構描述是 nms:interaction,則應新增 
<empty>。 - 類別:指定優惠必須屬於的類別。
 - 主題:指定選件必須屬於的主題。
 - uuid: Adobe Campaign永久cookie的值(「uuid230」)。
 - nli: Adobe Campaign工作階段Cookie的值(「nlid」)。
 - noProp:使用「true」值停用提案插入。
 
NOTE
          targetId 和 maxCount 設定是強制性的。 其他則是選擇性的。
          為回應查詢,SOAP服務將傳回下列引數:
- interactionId:互動識別碼。
 - 主張: XML元素,包含主張清單,每個都具有自己的ID和HTML表示法。
 
優惠更新 offer-update
將 nms:interaction#UpdateStatus 命令新增至URL,後面接著這些引數:
- 主張:字元字串,它包含在優惠方案主張期間作為輸出提供的主張ID。 請參閱優惠方案主張。
 - 狀態:字串型別,它指定選件的新狀態。 可能的值列在 nms:common 結構描述的 propositionStatus 列舉中。 例如,數字3是現成可用的,對應至 已接受 狀態。
 - context: XML元素,可讓您在空間結構描述中新增內容資訊。 如果使用的結構描述是 nms:interaction,則應新增 
<empty>。 
使用SOAP呼叫的範例 example-using-a-soap-call
您會在下方找到SOAP呼叫的程式碼範例。
以下是URL的範例:
http://<urlOfYourJSSP>?env=liveRcp&sp=<nameSpaceOfferSpace>&t=<targetID>
            <%
  var env = request.getUTF8Parameter("env");
  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.*.htmlSource )
      {
        %><td><%=propHtml%></td><%
      }
  %></tr></table><%
      break;
    }
  }
  catch( e )
  {
  }
  %>
            recommendation-more-help
            
          601d79c3-e613-4db3-889a-ae959cd9e3e1