Attività del flusso di lavoro SMS in entrata per l’infrastruttura mid-sourcing inbound-sms-wf
Limitazioni limitations
- Questo caso d’uso si applica solo all’istanza Marketing in cui si raccolgono i dati inSMS dalle istanze Mid-sourcing.
- Non implementare questo caso d’uso nell’istanza di mid-sourcing.
- Solo un flusso di lavoro personalizzato per account di mid-sourcing esterno.
Implementazione implementation
-
Aggiungi un'estensione allo schema
nms:inSMSnell'istanza Marketing. L'estensione aggiungerà un nuovo attributo allo schemanms:inSMSe terrà traccia della chiave primaria del record inSMS proveniente dall'istanza di mid-sourcing.code language-xml <element img="nms:miniatures/mini-sms.png" label="Incoming SMS" labelSingular="Incoming SMS" name="inSMS"> <dbindex name="midInSMSId" unique="false"> <keyfield xpath="@extAccount-id"/> <keyfield xpath="@midInSMSId"/> </dbindex> <attribute label="External Mid SMS ID" name="midInSMSId" type="long"/> </element> -
Per applicare le modifiche apportate agli schemi, avviare l'Assistente all'aggiornamento del database. L'Assistente è accessibile tramite Strumenti > Avanzate > Aggiorna struttura database. Controlla se la struttura fisica del database corrisponde alla relativa descrizione logica ed esegue gli script di aggiornamento SQL. Ulteriori informazioni
-
Arresta ed esegui il backup del flusso di lavoro contenente l'attività SMS in entrata.
Eseguire il backup del puntatore di opzione corrispondente con il seguente formato
SMS_MO_INDEX_{internal name of the workflow}_{name of the insms workflow activity}_{internal name of the external account to access the mid}.
Ulteriori informazioni sul backup
-
(FACOLTATIVO) se si sta già utilizzando un'attività Scheduler, aprire il flusso di lavoro e riconfigurarlo nel modo seguente:
-
Replica le impostazioni correnti dalla scheda Pianifica dell'attività SMS in entrata nell'attività Pianificazione esterna.
-
Disattiva l'impostazione corrente nella scheda Pianificazione dell'attività SMS in entrata.
-
-
Aggiorna lo script personalizzato Inbound SMS.
Sostituisci il blocco seguente. Tieni presente che questo script può variare se in precedenza hai personalizzato questo codice.
code language-javascript var lastSynchKey = getOption('SMS_MO_INDEX_WKF1105_inSmsUS_smsmidus'); var smsId = application.getNewIds(1); xtk.session.Write(<inSMS xtkschema="nms:inSMS" _operation="insert" id={smsId} origin={smsMessage.origin} message={smsMessage.message} providerId={smsMessage.messageId}/>); return 2;Con il seguente nuovo script personalizzato per aggiornare i dati inSMS in base a una chiave composita, che combina la chiave primaria del record di mid-sourcing e l’ID account esterno del routing Marketing SMS.
Segui i prerequisiti seguenti:
-
Immettere il valore reale per
<EXTERNAL_ACCOUNT_ID>, ad esempiovar iExtAccountId=72733155. -
Assicurati di mantenere i seguenti elementi nello script personalizzato:
_operation="insertOrUpdate"_key="@midInSMSId,@extAccount-id"midInSMSId={smsMessage.id}inSms.@["extAccount-id"] = iExtAccountId;{}
code language-javascript // please enter real external account ID to replace <EXTERNAL ACCOUNT ID> var iExtAccountId=<EXTERNAL_ACCOUNT_ID>; var inSms = <inSMS xtkschema="nms:inSMS" _operation="insertOrUpdate" _key="@midInSMSId,@extAccount-id" midInSMSId={smsMessage.id} message={smsMessage.message} origin={smsMessage.origin} providerId={smsMessage.providerId} alias={smsMessage.alias} messageDate = {smsMessage.messageDate} receivalDate = {smsMessage.receivalDate} deliveryDate = {smsMessage.deliveryDate} largeAccount = {smsMessage.largeAccount} countryCode = {smsMessage.countryCode} operatorCode = {smsMessage.operatorCode} linkedSmsId={smsMessage.linkedSmsId} separator = {smsMessage.separator}/> inSms.@["extAccount-id"] = iExtAccountId; xtk.session.Write(inSms); return 2; -
-
Aggiorna lo script di inizializzazione avanzata SMS in entrata con lo script seguente.
Lo script ripristina il puntatore della chiave primaria a 24 ore prima. Il flusso di lavoro tenterà di rielaborare tutti i dati inSMS dall’istanza Mid-sourcing nelle 24 ore precedenti e di aggiungere eventuali dati mancanti all’istanza Marketing.
code language-javascript // please enter real external account ID to replace <EXTERNAL_ACCOUNT_ID> // please enter real pointer option name to replace '<POINTER_OPTION_NAME>' // OPTION NAME format: SMS_MO_INDEX_{internal name of the workflow}_inSms_{internal name of the external account to access the mid} var queryDef = xtk.queryDef.create( <queryDef operation="getIfExists" schema="nms:inSMS" lineCount="1"> <select> <node expr="@midInSMSId" alias="@midInSMSId"/> </select> <where> <condition expr="@midInSMSId != 0"/> <condition expr={"@created > SubHours(GetDate(), 24)"}/> <condition expr={"[@extAccount-id]=<EXTERNAL_ACCOUNT_ID>"}/> </where> <orderBy> <node expr="@midInSMSId"/> </orderBy> </queryDef>); var res = parseInt(queryDef.ExecuteQuery().@midInSMSId.toString()); if( !isNaN(res) ) setOption('<POINTER_OPTION_NAME>', res);note warning WARNING - Se diversi account di indirizzamento SMS sono collegati alla stessa istanza Mid-sourcing, è consentito un solo flusso di lavoro per ogni istanza Mid-sourcing.
- Puoi utilizzare qualsiasi ID account esterno. Il ruolo della chiave esterna è mantenere l’integrità della riconciliazione dei dati in scenari che coinvolgono diversi server di mid-sourcing in cui l’ID SMS di mid-sourcing potrebbe essere identico in altre istanze di mid-sourcing.
- Se esistono più flussi di lavoro inSMS per istanza di mid-sourcing, può verificarsi la duplicazione dei dati in quanto l’ID SMS di mid-sourcing rimane costante mentre gli ID dell’account esterno variano.
-
Salva e riavvia il flusso di lavoro.