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

Return value about "function processDeliveryPart" in a Connector

Avatar

Avatar
Validate 10
Level 2
tumuzhuanjia
Level 2

Likes

6 likes

Total Posts

26 posts

Correct Reply

0 solutions
Top badges earned
Validate 10
Validate 1
Boost 5
Boost 3
Boost 1
View profile

Avatar
Validate 10
Level 2
tumuzhuanjia
Level 2

Likes

6 likes

Total Posts

26 posts

Correct Reply

0 solutions
Top badges earned
Validate 10
Validate 1
Boost 5
Boost 3
Boost 1
View profile
tumuzhuanjia
Level 2

08-08-2017

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.

Accepted Solutions (1)

Accepted Solutions (1)

Avatar

Avatar
Validate 1
MVP
Jean-Serge_Biro
MVP

Likes

353 likes

Total Posts

464 posts

Correct Reply

153 solutions
Top badges earned
Validate 1
Boost 50
Boost 5
Boost 3
Boost 250
View profile

Avatar
Validate 1
MVP
Jean-Serge_Biro
MVP

Likes

353 likes

Total Posts

464 posts

Correct Reply

153 solutions
Top badges earned
Validate 1
Boost 50
Boost 5
Boost 3
Boost 250
View profile
Jean-Serge_Biro
MVP

09-08-2017

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

Answers (2)

Answers (2)

Avatar

Avatar
Validate 10
Level 2
tumuzhuanjia
Level 2

Likes

6 likes

Total Posts

26 posts

Correct Reply

0 solutions
Top badges earned
Validate 10
Validate 1
Boost 5
Boost 3
Boost 1
View profile

Avatar
Validate 10
Level 2
tumuzhuanjia
Level 2

Likes

6 likes

Total Posts

26 posts

Correct Reply

0 solutions
Top badges earned
Validate 10
Validate 1
Boost 5
Boost 3
Boost 1
View profile
tumuzhuanjia
Level 2

08-08-2017

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" />)

      }

    }

  }

Avatar

Avatar
Validate 10
MVP
Amit_Kumar
MVP

Likes

329 likes

Total Posts

649 posts

Correct Reply

231 solutions
Top badges earned
Validate 10
Validate 1
Establish
Give Back 50
Give Back 5
View profile

Avatar
Validate 10
MVP
Amit_Kumar
MVP

Likes

329 likes

Total Posts

649 posts

Correct Reply

231 solutions
Top badges earned
Validate 10
Validate 1
Establish
Give Back 50
Give Back 5
View profile
Amit_Kumar
MVP

08-08-2017

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