cancel
Showing results forย 
Search instead forย 
Did you mean:ย 

Need to join the input array of objects to string

arunnp
New Contributor II

Hi
The json input I get to the pipeline is array of objects. I need iterate each object data and join as a string.
Also I need to append some html code in between.
Ex: input json
โ€œchathistโ€: [{
โ€œcreated_byโ€: โ€œtestโ€,
โ€œcreated_dateโ€: 1626244986151,
โ€œinformation_typeโ€: โ€œRequestโ€,
โ€œtextโ€: "Account ",
โ€œcontentโ€: โ€œโ€,
โ€œcontent_typeโ€: โ€œQuestionโ€
}, {
โ€œcreated_byโ€: โ€œWsswWโ€,
โ€œcreated_dateโ€: 1626244990226,
โ€œinformation_typeโ€: โ€œResponseโ€,
โ€œtextโ€: "Clicca sulla Societร  alla quale ",
โ€œcontentโ€: โ€œโ€,
โ€œcontent_typeโ€: โ€œtextโ€
}, {
โ€œcreated_byโ€: โ€œtestโ€,
โ€œcreated_dateโ€: 1626244998853,
โ€œinformation_typeโ€: โ€œRequestโ€,
โ€œtextโ€: โ€œexample test456โ€,
โ€œcontentโ€: โ€œโ€,
โ€œcontent_typeโ€: โ€œsrnโ€
}
]

This input array of objects need to parse and join as string. First I need to check array length > 0
I have similar logic using JSonata. I am trying to achieve this using Expression builder.

{{ $count($Request.Hist ) > 0 ?
$join( [ โ€œ[code]

[code]

โ€ & $Header & โ€œ


โ€,
$join($Request.ChatHist.($.content_type != โ€œsrnโ€ ? ($.created_by=โ€œabcโ€ ? โ€œ[code]โ€ & โ€œVA: " &โ€" : "[code] โ€ฆ

Can we use JSonata in Snaplogicโ€ฆ ? if not how we can achieve this through expression builder. I tried few ways using Array and String function but did not resolve.
Pls suggest.
thanks
arun

10 REPLIES 10

arunnp
New Contributor II

@bojanvelevski , I tried few ways using expression builder I did not get the formatted msg.
Any suggestions will be helpful.
thanks
arun

arunnp
New Contributor II

Any suggestions or helpโ€ฆ?
for the requirement I mentioned aboveโ€ฆ

thanks
arun

j_angelevski
Contributor III

Hi @arunnp,

You want to make a string of all objects in the array ? Can you share a little bit more info on how did you get that sample output from that sample input data ? I donโ€™t think I understand that. For example, what output do you want this object to give you ?

{
		"created_by": "USer1",
		"text": "Clicca sulla ttger alla wrtr rtwt l'rewrre er deve ererg la :<b><br><br><ul><li><a role=\"button\" tabindex=\"0\" class=\"mccs-input\">ffdgc!</a>",
		"content": "",
		"content_type": "text"
}

Something like this ?

User1: Clicca sulla ttger alla wrtr rtwt l'rewrre er deve ererg la :<b><br><br><ul><li><a role=\"button\" tabindex=\"0\" class=\"mccs-input\">ffdgc!</a></li></ul></b>

arunnp
New Contributor II

Hi @j.angelevski

Yes, want to prepare a formatted string by reading the particular field from all objects. The Jsonata expression we are currently using I pasted above.
The sample input

{
	"chatHist": [{
			"created_by": "Info Person",
			"created_date": 1628581678201,
			"information_type": "Request",
			"text": "demo: I'm unable to create a new sale order",
			"content": "",
			"content_type": "Question"
		},
		{
			"created_by": "Test",
			"created_date": 1628581681109,
			"information_type": "Response",
			"text": "",
			"content": [{
				"abstract": "",
				"link": "https://.service-now.com//kb_view.do?sys_kb_id=2ec8ccb5900b44dc8783d452773994d3",
				"title": "Determine why Some People are Unable to Find or View a Web Page Saved on a File Server"
			}],
			"content_type": "srn"
		},
		{
			"created_by": "Test",
			"created_date": 1628581681967,
			"information_type": "Response",
			"text": "Please <a role=\"button\" tabindex=\"0\" class=\"create-ticket\"> click confirm <\/a> to create an incident for your query. If you do not wish to create an incident just ask any other question.",
			"content": "",
			"content_type": "text"
		}
	]
}

After formatting this the string will be

Virtual assistant chat history:

Info Person:demo: I'm unable to create a new sale order
VA: Please click confirm to create an incident for your query. If you do not wish to create an incident just ask any other question.

here we are adding โ€˜Virtual assistant chat history:โ€™ as heading of the string.

VA.-> replacement for the โ€œcreated_byโ€: โ€œTestโ€. field value.
I hope I gave details.

thanks
arun

j_angelevski
Contributor III

I created two solutions for this:

  1. Output a string

  2. Output html string

You can download the pipeline here
ChatHistory_Community_2021_08_10.slp (12.6 KB)

The problem here is what happens with those objects that donโ€™t have the text field ? What happens when content-type is something else than text ? For now the pipeline I attached is not omitting those fields with empty text or where content-type is not text, it will simply display it as empty string.

Sample output from pipeline solution 1:

Virtual assistant chat history:

Info Person: demo: I'm unable to create a new sale order
Test: 
Test: Please <a role="button" tabindex="0" class="create-ticket"> click confirm </a> to create an incident for your query. If you do not wish to create an incident just ask any other question.

Sample html output from solution 2:

<body><h1>Virtual assistant chat history:</h1><br/><p>Info Person : demo: I'm unable to create a new sale order</p><p>Test : </p><p>Test : Please <a class="create-ticket" role="button" tabindex="0"> click confirm </a> to create an incident for your query. If you do not wish to create an incident just ask any other question.</p></body>

Of course the html output is not formatted here but you can see how it looks on jsfiddle:
image