Wie erhalte ich eine SMS Shortlink API-Antwort als Link und nicht als Nutzlast?

Jan 07 2021

Ich verwende den folgenden Code (zum Beispiel nur über den Stapelaustausch-Link):

%%[ 
    var @Id, @shortenUrl, @cuttlyUrl, @link, @linkName
    set @startDate = "2021-01-01 6:45 AM"
    set @endDate = Now(1)
    set @numOne = 100000
    set @numTwo = 99999
    set @randNum = random(@numOne,@numTwo)
    set @time = dateDiff(@startDate, @endDate, "MI")
    set @linkName = concat('repko-testing-',@time,@randNum)
    set @link = 'https://salesforce.stackexchange.com/questions/122185/ampscript-in-sms-how-to-use-dynamic-content-in-sms-with-ampscript-mobileconne'
    set @cuttlyUrl = Concat('https://cutt.ly/api/api.php?key=[key]&short=',@link,'&name=',@linkName,'&format=txt')
    set @shortenUrl = HTTPGet(@cuttlyUrl)
    ]%%

Alles funktioniert, aber ich erhalte eine Erfolgsantwort wie folgt:

{"url":{"status":7,"fullLink":"https:\/\/salesforce.stackexchange.com\/questions\/122185\/ampscript-in-sms-how-to-use-dynamic-content-in-sms-with-ampscript-mobileconne","date":"2021-01-06","shortLink":"https:\/\/cutt.ly\/repko-testing-741599999","title":"marketing cloud - AMPScript in SMS - How to use dynamic content in SMS with AMPScript? MobileConnect - Salesforce Stack Exchange"}}

Das ist großartig, um zu wissen, dass ich mein Ampscript korrekt eingerichtet habe, aber ich möchte nicht, dass der Benutzer dies sieht. Ich suche nur nach dem Link. Also suche ich nur danach, dass es so ist:https://cutt.ly/repko-testing-741599999

Ich denke, es gibt eine einfache Lösung, aber dies ist mein erstes Mal, also bin ich mir nicht sicher, was der nächste Schritt jetzt ist.

Antworten

2 JasonHanshaw Jan 07 2021 at 00:38

Sie müssen die JSON-Antwort analysieren und den Wert auswählen, den Sie füllen möchten. Mit SSJS können Sie dies ziemlich einfach tun:

<script runat="server">
Platform.Load("Core", "1");

/* GET HTTPGET RESPONSE */
var jsonResp = Platform.Function.ParseJSON(Platform.Variable.GetValue("@shortenUrl"));

/* GET SHORT LINK VALUE FROM RESPONSE */
var shortLink = jsonResp.url.shortLink;

/* OUTPUT VALUE OR ASSIGN TO AMPSCRIPT VARIABLE*/
Write(shortLink);
Platform.Variable.SetValue("@shortLink",shortLink);
</script>