5

In order to use the outArgument from one REST activity as an inArgument for another REST activity the schema is required. The schema is needed to compare the data types of the value being passed. The config.json using the inArgument needs to have "schema": { "arguments": { "execute": { "inArguments": [ { "key": { ...


5

Realizing this question is over a year old I thought I would still add my answer that does not require an API call but instead uses Postmonger. Using the Postmonger events requestInteraction and requestedInteraction you can get the JSON of the entire interaction, including the InteractionID and any activity keys. You can then parse the JSON and set that ...


4

I don't know of any possibility to retrieve the event definition key using data binding, but here is the solution I use for my custom activities: I added a field to the configuration dialog of the custom activity where I enter the event definition key when configuring the activity When the configuration is finished I construct/overwrite the arguments with ...


3

For Salesforce Entry Events, this is a bit different and you need to add double quotes around the path/column name to the field. So for your case this should look like this: "fieldKey": "{{Event." + eventDefinitionKey + ".\"Task:Field_Name__c\"}}" which should result in: {{Event.SalesforceObjacf28b016bf83c75b4926e0ec292eda5."Task:SMS_Content__c"}} For ...


3

The simplest way is to make sure you deserialize the JSON response into a custom Apex class. You will create an apex class that resembles the response you obtain from the external system. There is a tool to help you create a class based on JSON responses. Let's say your class looks like below public class Response{ @AuraEnabled public String lastName {...


3

I kept working at it and I found that I can use array indexing in the cmp.getReference() so data-binding is applied correctly. createChildComponent : function(prop) { return ["c:childComponent", { "property":prop }]; }, renderProperties : function(cmp, properties) { let definitions = properties .map(function(prop, ...


3

Another option apparently is using requestedInteraction together with a requestInteraction event called by the Custom Activity. Here is an example code: connection.on('requestedInteractionDefaults', function(settings) { if( settings.error ) { console.error( settings.error ); } else { defaults = settings; } console.log('...


3

The easiest way do to this would be to use aura:if: <aura:if isTrue="{!v.flag}"> <c:CstmComp value="{!v.Case.Field1__c}"/> <aura:set attribute="else"> <c:CstmComp value="{!v.Case.Field2__c}"/> </aura:set> </aura:if> You could probably also use SecureComponent#getReference and wire it up in your controller, ...


3

What you should do is follow this example and use AMPscript in your subject. "inArguments":[ { "firstName":"{{Contact.Attribute.__your-de-name__.FirstName}}"}, { "lastName":"{{Contact.Attribute.__your-de-name__.LastName}}"}, { "emailAddress": "{{Contact.Default.Email}}"} ], When you fire the event, you can pass data ...


2

You can also use the 'activity customer key' there. It will look like "REST-1", "WAIT-3", "MOBILE-2", etc. { "caseID":"{{Interaction.REST-1.caseID}}" } You can get it by querying for details about your interaction: headers: Authorization: Bearer <token> Content-Type: application/json GET https://jbinteractions.exacttargetapps.com/fuelapi/...


2

Ran into a similar issue - the documentation is a bit confusing. We shouldn't include square brackets when using databinding, so your inArguments should look like (assuming JSON): "inArguments": { "myCustomSubject": "{{Contact.Attribute.\"Member Preferences\".Preference}}" } (Quotes around "Preference" are optional, since it has no whitespace.) In the ...


2

The error may be due to a variety of reasons; for instance, if your email is invalid or your data-binding isn't valid). When viewing the status page (Admin/Contacts) open the Network tab in Dev Tools in Chrome and click on the traceevents route. More detail is contained in the Response tab. Copy the json and paste into a json pretty printer to format it. ...


2

The idea behind this feature is that an activity can be placed anywhere in a journey. So, while Interaction-1 may have it first, Interaction-2 may place it further downstream, such as fourth. In each scenario, the 'activity customer key' (ie. REST-1), will be different. So this is a design-time, interaction-specific setting. To get information at runtime ...


2

You can use <apex:inputText required="{!reqd}" value="{!form[localFieldName]}" /> as <apex:inputField/> is applicable to SObjects. For more info, refer apex:inputText


2

You can use Data-Binding to achieve this. Data-binding allows your custom activity to interact with your data via the context of either the Contact, the Interaction, or the Event How to Use Data-Binding In order to use the data from your Trigger, your inArgument would look something like this: {{Event.my-custom-product-trigger-key.ProductId}} As for the ...


2

So after some additional tests, it appears it is not possible to bind attributes in an iterable (v42.0). Meaning {!item} is the same as {#item}. However, you can still pass in attributes from outside the scope of the iteration. So my workaround is to store the changes to the list items in temp or copy list (using the same iterable list, will cause issues ...


2

Instead of deserializing the JSON on apex class, pass the JSON to javascript controller and parse the json into javascript object. Also javascript will process the json much faster than apex and you will have control on json/javscript object to play with on javascript. import retrievePhone from "@salesforce/apex/ApexClassName.retrievePhone"; ...


2

In order to find your event definition key inspect journey payload using dev tools of your browser (network tab): Once you have eventDefinitionKey (in my example: DEAudience-3ab446ce-0427-deea-6871-033f3327ef9c) your final result will look like: {{Event.DEAudience-3ab446ce-0427-deea-6871-033f3327ef9c.ProductId}} Other approach is to develop something ...


2

According to the below article, easy way to bind all child records when we use a standard controller is {!Account.Contacts} - {!Parent.PluralAPIName of Child} This is an incorrect reading of the document. The child relationship name is the relationship name, which with standard objects is typically the plural of the API name of the child. To find the ...


2

Don't bind the value, but assign it when you want to update the child object: <lightning:input aura:id="objectdetail" label="Object" placeholder="enter the object..."/> <lightning:input aura:id="recordiddetail" label="Record ID" /> ... handleSubmit: function(component, event, helper) { let ...


1

Journey Builder processes records destined for your application on a row by row basis. You get one execute request per contact.


1

The issue is that you have used two forms. Combine your command button in the same form and it should work fine. Command buttons takes form as the context, if the form does not have any reference it would return null. public cm_PaymentInfoRouteController(){ myLoanWrap = new cm_LoanModel(); } Tested with : public class cm_PaymentInfoRouteController { ...


1

That's a limitation of how two-way binding works. It's one of a class of bugs which was eliminated in LWC by removing the ability to use two-way binding. Instead, you need to be able to have a reference to an object in order to see the changes to the inputs. Here's an example I wrote that works in my developer org: <aura:application extends="force:slds"&...


1

Once you have schema, extract fields and update inArguments property. Please check following example how to update custom activity configuration to support dynamic binding. // Save arguments and update journey builder function save() { console.log("*** saving arguments ***"); // remove all the args, only save the last one inArgPayload["arguments"]....


1

While It is logical to use Option #4, I actually had implemented sort of Option 3 for my use case: I had a huge form with multiple pages working with custom metadata for conditional rendering and multiple objects and had a challenge to make the whole thing loosely coupled. So I enclosed all the various sections of the form within a parent component, all the ...


1

It would seem that your ParentAppWithListAttrController.js should be using v.JustAList and v.JustAnItem where v.JustAnItem is located in the position in v.JustAList where the Event occurred. The old value of v.JustAnItem is irrelevant. You just need to put the new value in the proper location in the list, then set JustAList. If you don't set it, the change ...


1

You didn't actually save the record. As an aside, all this work you've done is basically pointless, because two-way binding works automatically; when docName is updated in the child, the simpleRecord.Name value in the parent is automatically updated. If you want to update the record, all you need to do is call saveRecord: handleComponentEventFired : ...


1

You should be able to achieve the required output using single SAQL. The below SAQL code should help you, where I have selected both the columns first and in the next line, the calculated value is displayed. q = load "database"; result = group q by 'all'; result = foreach result generate {{column(static_2.selection, [\"value\"]).asObject()}} as 'revenue', ...


1

You can't use a callback handler to update an unbound variable, because the other elements won't realize that anything's happened. The same article you quoted states: Don’t use a component’s init event and client-side controller to initialize an attribute that is used in an unbound expression. The attribute will not be initialized. Use a bound ...


1

I've seen this issue when Journey Builder is unable to bind the ContactKey in your Events request to a Contact Record. I think you have probably missed a step when creating an Event in Contact Builder. Please can you try following these steps. 1. The first step is to retrieve the Event Definition Key (a unique identifier for an Interaction Trigger) ...


Only top voted, non community-wiki answers of a minimum length are eligible