Your achievements

Level 1

0% to

Level 2

Tip /
Sign in

Sign in to Community

to gain points, level up, and earn exciting badges like the new
BedrockMission!

Learn more

View all

Sign in to view all badges

SOLVED

Return value about "function processDeliveryPart" in a Connector

tumuzhuanjia
Level 3
Level 3

Hi

I am tring to write a JS Connector to send message to my subscription.

But I find the return value "function processDeliveryPart" is sometime strange.

I use the follow JavaScript code to return a message if the deliveryPart.message.@id is some error happed.

try{

     // my code to send message

}catch(e)

msgs.appendChild(<message

              id={deliveryPart.message.@id}

              status="2"

              noRetry="true"

              log={e.toString()}

              failureReason="20"

              failureType="1"/>);

}

My question is :

(1) Sometime "failureReason" and  "failureType" is not work.  It seams that Adobe Campaign set the

      "failureReason" and  "failureType" 's value according to "log={e.toString()}" .

      Sometime the "Reason" will be set to "Refused" even I did not set the 'failureReason="20"'

2017-08-08_150240.jpg

(2) would you like to explain the follow attributes to me? 

     status            :    0: Ignored; 1: Sent; 2: Failed

     failureType    :   0: Undefined; 1: soft 2: hard  

     failureReason :   0: Undefined; 20: Refused

    What I know is the up. Is it right? Where can I find the guide about these attribute?

(3) Some time a deliveryPart.message.@address will be "Quarantine" under 

                "Administration -> Campaign Management -> Non deliverable Management -> Non deliverables and addresses",

      what is the reason?

Best regards.

1 Accepted Solution
Jean-Serge_Biro
Correct answer by
Community Advisor
Community Advisor

Hi tumuzhuanjia,

I don't know if the classic quarantine management for emails and SMS is valuable for the WeChat service, I don't know WeChat at all, but it should work as Facebook and Line channels more or less?

Anyway, please find the usual documentation in TechNotes here:

https://docs.campaign.adobe.com/doc/AC6.1/en/Technotes/AdobeCampaign_Understanding_quarantine_qualif...

and also enumeration values and other explanations here:
Delivery and tracking

(I used these documentation past years, I don't know if it are useful for other channels).

One more thing, in your screenshot the line highlighted is "hard" type. Perhaps the WeChat service works as for MX or SMS platforms, by delivering feedback later and so putting it in hard bounce the quarantine record, after X soft bounces trial to resend (as for mails management ?).

How is defined the delivery WeChat in the Send tab, section of consecutive trials of the Properties form ?

Regards.
Jean-Serge

View solution in original post

3 Replies
Amit_Kumar
Community Advisor
Community Advisor

Hi Tumuzhuanjia,

It seems you are getting exceptions when you are executing try block. It may happen because your Third party system(Subscriber) is not working or taking longer than expected and you are using a for loop in your try block to initiate the second request.

I can't say with certainty what the problem is but if you can share the code from the try block, it would be easier to help you out.

Did you try this request from POST-MAN?

Regards,

Amit

tumuzhuanjia
Level 3
Level 3

Hi Amit:

Thans for your reply.

I am making a unit test to my "try{}" code. So in my "try" it will "throw" errors according logic. So it is correct the code goto the "catch(e){}".

What I want is the standard of the "msgs.appendChild" when error happed. And when the address will be "Quarantine" ?

msgs.appendChild(<message

              id={deliveryPart.message.@id}

              status="?"

              noRetry="true"

              log={e.toString()}

              failureReason="?"

              failureType="?"/>);

And my code is the follow:

  for each (var msg in deliveryPart.message)

  {

    try {

      // get the service ID and mediaId

      var woaId   = NL.XTK.toString(msg.wechatService)

      var mediaId = NL.XTK.toString(msg.wechatMedia)

      

      if (woaId == null || woaId == "" || mediaId == null || mediaId == "")

      {

        throw "Parameter error: woaId = " + woaId + "; mediaId = " + mediaId

      }

     

      woaId = woaId.replace(BF_SERVICE_PREFIX, "")

      //we saved the address with format "@openid + '@' + [service/@name]"

      var address = NL.XTK.toString(msg.@address)

      var addrArray = address.split('@', 2)

      if (addrArray.length != 2)

        continue

       

      var openId = NL.XTK.toString(addrArray[0])

      var tmpSubscriptionAccount = NL.XTK.toString(addrArray[1])

      var tmpDeliveryAccount = NL.XTK.toString(msg.wechatService)

       

      if (tmpSubscriptionAccount != tmpDeliveryAccount)

          throw "Ignore"

     

      var response 

      response = app.sendCustomerMsgByOpenid(woaId, openId, mediaId)  

      if (response == null || response.code == null)

        throw "Internal Error: response or code is null."

     

      if (response.code != 0)

        throw response.message

       

      msgs.appendChild(<message

              id={msg.@id}

              providerId={providerId}

              status="1"

              log="Sent"

              />)

    }

    catch (e)

    {

      log = e

     

      if ( log == "Ignore" )

      {

        var excludeLog = "Ingored: not belong to the target wechat account " + BF_SERVICE_PREFIX + woaId

        msgs.appendChild(<message id={msg.@id} status={0} log={excludeLog} noRetry="true"

          providerId={providerId} />)

      }

      else

      {

        msgs.appendChild(<message id={msg.@id} status={2} log={log} noRetry="true"

          providerId={providerId} failureReason="20" failureType="1" />)

      }

    }

  }

Jean-Serge_Biro
Correct answer by
Community Advisor
Community Advisor

Hi tumuzhuanjia,

I don't know if the classic quarantine management for emails and SMS is valuable for the WeChat service, I don't know WeChat at all, but it should work as Facebook and Line channels more or less?

Anyway, please find the usual documentation in TechNotes here:

https://docs.campaign.adobe.com/doc/AC6.1/en/Technotes/AdobeCampaign_Understanding_quarantine_qualif...

and also enumeration values and other explanations here:
Delivery and tracking

(I used these documentation past years, I don't know if it are useful for other channels).

One more thing, in your screenshot the line highlighted is "hard" type. Perhaps the WeChat service works as for MX or SMS platforms, by delivering feedback later and so putting it in hard bounce the quarantine record, after X soft bounces trial to resend (as for mails management ?).

How is defined the delivery WeChat in the Send tab, section of consecutive trials of the Properties form ?

Regards.
Jean-Serge

View solution in original post