不明なインバウンドEメールIDの担当者詳細の作成および移入
不明なEメールIDからインバウンド・メッセージを受信した場合、インバウンド・レコードまたはサービス・リクエストに担当者詳細が移入されません。
インバウンドEメール処理中に新規担当者を作成するには、次のステップを使用します。 最初のスクリプトは最初のトリガー通知を示し、2番目のスクリプトは新規に作成された担当者をサービス・リクエストのプライマリ担当者として移入するために使用できます。
- アプリケーション・コンポーザで、「オブジェクト」>「標準オブジェクト」>「インバウンド・メッセージ」>「サーバー・スクリプト」を選択します。
- インバウンド・メッセージ・オブジェクトにカスタム・フィールドを作成し、次を使用して担当者IDと送信者Eメール・アドレスを格納します:
-
フィールド名: ContactIdタイプ:Number.
-
フィールド名: SenderEmailタイプ:Text.
-
- 「トリガー」>「オブジェクト・トリガー」>「新規トリガーの追加」をクリックします。
- トリガーに「データベースに挿入する前に」を選択し、トリガー名を指定します。トリガー定義については、次の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()) }
- アプリケーション・コンポーザで、「オブジェクト」>「標準オブジェクト」>「サービス・リクエスト」>「サーバー・スクリプト」を選択します。
- 「トリガー」>「オブジェクト・トリガー」>「新規トリガーの追加」をクリックします。
- トリガーに「データベースに挿入する前に」を選択し、トリガー名を指定します。
トリガー定義については、次の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()) }
- サンドボックスを公開します。