액세스 토큰을 얻은 다음 XML 파일을 사용하여 SOAP API를 통해 Salesforce Marketing Cloud의 테이블에 열을 추가하는 간단한 bash 파일이 있습니다. 문제는 변수를 사용하여 액세스 토큰을 xml 파일에 자동으로 넣는 방법을 모른다는 것입니다. 나는 "$token"과 그 변형을 시도했지만 성공하지 못했습니다. 이것은 내 코드입니다.
#!/bin/sh
# Get an authorisation Token
token_output=$(curl \
-H "Content-Type: application/json" \
-d '
{
"grant_type": "client_credentials",
"client_id": "ccccccc",
"client_secret": "sssssss",
"scope": null
}' \
https://xxxxxxxx.auth.marketingcloudapis.com/v2/Token | jq '.')
token=$(jq -r '.access_token' <<< "$token_output") \
curl -XPOST \
-H "Content-type: text/xml; charset=utf-8" \
-H "SOAPAction: Update" \
-d @updateDE.xml \
https://xxxxxxxx.soap.marketingcloudapis.com/Service.asmx
이것은 XML 파일입니다.
<?xml version="1.0" encoding="UTF-8"?>
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<s:Header>
<a:Action s:mustUnderstand="1">Update</a:Action>
<a:To s:mustUnderstand="1">https://xxxxxxxx.soap.marketingcloudapis.com/Service.asmx</a:To>
<fueloauth xmlns="http://exacttarget.com">"$token"</fueloauth>
</s:Header>
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<UpdateRequest xmlns="http://exacttarget.com/wsdl/partnerAPI">
<Options />
<Objects xsi:type="ns1:DataExtension" xmlns:ns1="http://exacttarget.com/wsdl/partnerAPI">
<CustomerKey>0B35F2DD-6A27-448D-96D8-8CBD7598FD85</CustomerKey>
<Fields>
<Field>
<Name>New Field4</Name>
<MaxLength>200</MaxLength>
<IsRequired>true</IsRequired>
</Field>
</Fields>
</Objects>
</UpdateRequest>
</s:Body>
</s:Envelope>
미리 감사드립니다.
답변1
예를 들어 마커 대신 알려진 텍스트를 배치할 수 있습니다. TOKEN
:
...
<fueloauth xmlns="http://exacttarget.com">TOKEN</fueloauth>
...
그런 다음 sed를 사용하여 해당 텍스트를 실제 마크업으로 바꿉니다.
sed -i 's/TOKEN/'"$token"'/g' file.xml