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

  1. Aggiungi un'estensione allo schema nms:inSMS nell'istanza Marketing. L'estensione aggiungerà un nuovo attributo allo schema nms:inSMS e 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>
    
  2. 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

  3. 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

  1. (FACOLTATIVO) se si sta già utilizzando un'attività Scheduler, aprire il flusso di lavoro e riconfigurarlo nel modo seguente:

    1. Replica le impostazioni correnti dalla scheda Pianifica dell'attività SMS in entrata nell'attività Pianificazione esterna.

    2. Disattiva l'impostazione corrente nella scheda Pianificazione dell'attività SMS in entrata.

  2. 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 esempio var 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;
    
  3. 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.
  4. Salva e riavvia il flusso di lavoro.

recommendation-more-help
601d79c3-e613-4db3-889a-ae959cd9e3e1