機械翻訳について

不明なインバウンドEメールIDの担当者詳細の作成および移入

不明なEメールIDからインバウンド・メッセージを受信した場合、インバウンド・レコードまたはサービス・リクエストに担当者詳細が移入されません。

インバウンドEメール処理中に新規担当者を作成するには、次のステップを使用します。 最初のスクリプトは最初のトリガー通知を示し、2番目のスクリプトは新規に作成された担当者をサービス・リクエストのプライマリ担当者として移入するために使用できます。
  1. アプリケーション・コンポーザで、「オブジェクト」>「標準オブジェクト」>「インバウンド・メッセージ」>「サーバー・スクリプト」を選択します。
  2. インバウンド・メッセージ・オブジェクトにカスタム・フィールドを作成し、次を使用して担当者IDと送信者Eメール・アドレスを格納します:
    • フィールド名: ContactIdタイプ:Number.

    • フィールド名: SenderEmailタイプ:Text.

  3. 「トリガー」>「オブジェクト・トリガー」>「新規トリガーの追加」をクリックします。
  4. トリガーに「データベースに挿入する前に」を選択し、トリガー名を指定します。
    トリガー定義については、次のgroovyスクリプトを参照してください:
    try{
      def email = nvl(Sender,'noreply@xxx.com');
        
      def pProfileVO = newView('PersonProfile')
      pProfileVO.appendViewCriteria("PrimaryEmailAddress = '${email}'")
      pProfileVO.executeQuery()
        
      //Check if the contact already exists
      if (!(pProfileVO.hasNext())) {
            
          def firstname = substringBefore(Sender,'@')
          def lastname = substringBefore(Sender,'@');
        
          //Create Contact Party
          def ContactPartyObject = newView('PersonParty');
          def ContactParty = ContactPartyObject.createRow();
          ContactParty.setAttribute('CreatedByModule','FUSE');
        
          //Create Contact Profile
          def ContactPartyProfile = ContactParty.PersonProfile;
          def ContactProfileRow = ContactPartyProfile.createRow();
          ContactProfileRow.setAttribute('CreatedByModule','FUSE');
          ContactProfileRow.setAttribute('DeceasedFlag','N');
          ContactProfileRow.setAttribute('PersonFirstName',firstname);
          ContactProfileRow.setAttribute('PersonLastName',lastname);
        
          //Create Contact Usage assignment
          def ContactPartyUsageAssignment = ContactParty.PartyUsageAssignment;
          def ContactPuaRow = ContactPartyUsageAssignment.createRow();
          ContactPuaRow.setAttribute('CreatedByModule','FUSE');
          ContactPuaRow.setAttribute('PartyUsageCode','CONTACT');
        
          //Create Contact Email
          def emailcollection = ContactProfileRow.Email;
          def Emailrec = emailcollection.createRow();
          Emailrec.setAttribute('EmailAddress',email);
          Emailrec.setAttribute('CreatedByModule','FUSE');
        
          //Insert rows
          emailcollection.insertRow(Emailrec);
          ContactPartyUsageAssignment.insertRow(ContactPuaRow);
          ContactPartyProfile.insertRow(ContactProfileRow);
          ContactPartyObject.insertRow(ContactParty);
           
          //Set contact id and email
          def partyId = ContactProfileRow.PartyId;
          this.setAttribute('SenderEmail_c',email);
          this.setAttribute('ContactId_c',partyId); 
           
      }
    } catch(Exception e){
        println(e.getMessage())
    }
  5. アプリケーション・コンポーザで、「オブジェクト」>「標準オブジェクト」>「サービス・リクエスト」>「サーバー・スクリプト」を選択します。
  6. 「トリガー」>「オブジェクト・トリガー」>「新規トリガーの追加」をクリックします。
  7. トリガーに「データベースに挿入する前に」を選択し、トリガー名を指定します。

    トリガー定義については、次のgroovyスクリプトを参照してください。

    try{
      if (SourceCd=='ORA_SVC_INBOUND_MSG' && ChannelTypeCd=='ORA_SVC_EMAIL'){
         def viaVo = this.getAttribute("channelCommunication");
         def inbdMsgId;
         def strRoutingCd = "";
         while(viaVo.hasNext()){
         def r = viaVo.next();
         strRoutingCd = r.getAttribute("RoutingCd");
         if (strRoutingCd == "ORA_SVC_FROM")
            inbdMsgId = r.getAttribute("InboundObjectId");
          break;
         }
     
        def inboundMsgVO=newView('InboundMessagesVO');
        def voRows = inboundMsgVO.findByKey(key(inbdMsgId),1)
        def voInboundRow = voRows[0]
        def partyId = voInboundRow.getAttribute("ContactId_c");
        this.setAttribute('PrimaryContactPartyId',partyId);
      }
    } catch(Exception e){
      println(e.getMessage())
    }
  8. サンドボックスを公開します。