cURL 명령과 쉘 스크립트에서 Salesforce Chatter REST API를 실행하여 Chatter 메시지 게시
11647 단어 curlSalesforceChatterBash
소개
Salesforce의 채팅 기능 "Chatter"에 대해, 다양한 조작을 실시할 수 있는 Chatter REST API라고 하는 것이 있습니다.
Chatter REST API는 PHP와 Ruby와 같은 프로그램에서뿐만 아니라 cURL (컬) 명령으로도 호출 할 수 있습니다.
이 기사에서는 cURL 명령을 사용하여 Salesforce의 Chatter REST API를 호출하고 Salesforce의 Chatter에 메시지를 게시하는 명령을 작성합니다.
cURL 명령으로 Salesforce REST API를 조작하는 방법은 이 기사을 참조하십시오.
실행 환경
이 기사의 cURL을 실행하는 환경은 다음과 같습니다.
OS
기계 종류
OS 버전
커널 버전
Mac
MacBook PRO (Retina)
macOS Mojave 10.14.1
Darwin Kernel Version 18.2.0
Chatter 메시지 게시자(Chatter REST API 호출자)의 Salesforce 조직 버전은 다음과 같습니다.
버전
API 버전
Salesforce Winter '19
Salesforce.com Enterprise Web Services API 버전 44.0
참고 자료
Salesforce 사의 Chatter REST API 레퍼런스를 참고하였습니다. 고마워요.
Chatter REST API 개발자 가이드 -> Post a Feed Item
Chatter REST API 개발자 가이드 (일본어 버전) -> 직접 메시지 보내기 (일본어 버전)
cURL 명령으로 Salesforce REST API에 연결하기 위한 사전 준비
(1) Salesforce 측에서 Chatter REST API를 호출 할 수 있도록 설정
Chatter REST API를 호출할 수 있도록 Salesforce 측에서 "로그인 IP 주소 제한"설정 등을 해 둘 필요가 있습니다. 설정 순서는 다음 기사를 참조하십시오.
PHP5에서 Salesforce REST API 실행 (사용자 정의 개체에 레코드 추가)
(2) cURL 명령 실행 머신의 OpenSSL 버전을 확인합니다.
다음 기사와 마찬가지로 cURL 명령을 실행하는 시스템에는 Chatter REST API에 연결하는 데 필요한 OpenSSL 1.0.1 이상이 설치되어 있어야 합니다. 자세한 내용은 아래 기사를 참조하십시오.
cURL 명령으로 Salesforce REST API 실행
cURL 명령으로 Salesforce Chatter에 직접 메시지를 게시하는 예
(1) cURL 명령으로 Chatter에 메시지를 게시하는 스크립트를 작성합니다.
다음과 같은 스크립트를 작성합니다.
$ vi push_salesforce_chatter_message.sh
push_salesforce_chatter_message.sh#!/bin/sh
export SFDC_HOST="login.salesforce.com"
export SFDC_API_VER="v44.0"
export SFDC_CLIENT_ID="Salesforceの「設定」->「ビルド」->「作成」->「アプリケーション」のChatter REST API接続用アプリケーションの「コンシューマ鍵」(OAuthコンシューマキー文字列)を記載します。"
export SFDC_CLIENT_SECRET="Salesforceの「設定」->「ビルド」->「作成」->「アプリケーション」のChatter REST API接続用アプリケーションの「コンシューマの秘密」(OAuthコンシューマシークレット文字列)を記載します。"
export SFDC_CLIENT_USERNAME="Chatter REST APIを有効化しているSalesforceユーザアカウント名を記載します。"
export SFDC_CLIENT_AUTHENTICATE_PASSWORD="Chatter REST APIを有効化しているSalesforceユーザアカウントのパスワードを記載します。"
## Chatterメッセージ投稿先のSalesforceユーザIDを指定する
SFDC_USER_ID="005**********"
## ChatterグループID等を指定す
## ChatterグループIDはChatterグループURLの以下g=の部分の事( https://ap7.salesforce.com/_ui/core/chatter/groups/GroupProfilePage?g=0F9************ )
SFDC_CHATTER_GROUP_ID="0F9************"
## Chatter REST APIのアクセストークンを取得する
SFDC_AUTH_RESP=`curl -s https://${SFDC_HOST}/services/oauth2/token -d "grant_type=password" -d "client_id=${SFDC_CLIENT_ID}" -d "client_secret=${SFDC_CLIENT_SECRET}" -d "username=$SFDC_CLIENT_USERNAME" -d "password=${SFDC_CLIENT_AUTHENTICATE_PASSWORD}"`=
## 取得したChatter REST APIのアクセストークンをセットする
SFDC_ACCESS_TOKEN=`echo "${SFDC_AUTH_RESP}" | awk 'BEGIN{FS="access_token\":"}{print $2}' | awk 'BEGIN{FS=","}{print $1}' | sed -e 's/\"//g'`
## 取得したChatter REST APIのSalesforceインスタンスURLをセットする
SFDC_INSTANCE_URL=`echo "${SFDC_AUTH_RESP}" | awk 'BEGIN{FS="instance_url\":"}{print $2}' | awk 'BEGIN{FS=","}{print $1}' | sed -e 's/\"//g'`
## Chatterメッセージ投稿本文に付加する文字列
SFDC_CHATTER_POST_DATE=`date '+%Y%m%d_%H%m%S'`
## Chatter REST APIを呼び出して、Chatterへメッセージを投稿する
curl -s -X POST ${SFDC_INSTANCE_URL}/services/data/${SFDC_API_VER}/chatter/feed-elements \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${SFDC_ACCESS_TOKEN}" \
-H "X-PrettyPrint:1" \
-d '{
"body" : {
"messageSegments" : [
{
"type": "Text",
"text": "curlからのテストメッセージ 投稿日時=['${SFDC_CHATTER_POST_DATE}'] "
},
{
"type": "Mention",
"id": "'${SFDC_USER_ID}'"
}
]
},
"feedElementType": "FeedItem",
"subjectId": "'${SFDC_CHATTER_GROUP_ID}'"
}'
작성한 쉘 스크립트의 구문 체크를 실시합니다. 아래와 같이 아무것도 표시되지 않으면 구문상의 문제는 없습니다.
$ sh -n push_salesforce_chatter_message.sh
$
작성한 쉘 스크립트에 실행 권한을 부여합니다.
$ chmod 750 push_salesforce_chatter_message.sh
$
(2) 위에서 작성한 쉘 스크립트를 실행하여 Chatter에 메시지를 게시합니다.
다음과 같이 스크립트를 실행하여 Chatter에 메시지를 게시합니다.
스크립트 실행의 결과로 Chatter REST API의 응답이 어긋나게 표시되지만, 이제 Chatter에 메시지가 게시됩니다.
$ ./push_salesforce_chatter_message.sh
{
"actor" : {
"additionalLabel" : null,
(中略)
},
"body" : {
"isRichText" : false,
"messageSegments" : [ {
"text" : "curlからのテストメッセージ 投稿日時=[20181225_011241] ",
"type" : "Text"
}, {
"accessible" : true,
"name" : "** **",
"record" : {
(中略)
"visibility" : "AllUsers"
}
(3) Salesforce에 로그인하여 Chatter에게 메시지가 도착했는지 확인합니다.
Salesforce에 로그인하여 cURL에서 게시한 메시지가 Chatter에 도착했는지 확인합니다.
보충사항
Salesforce Chatter REST API 참조 (일본어 버전)에서는 Chatter 메시지 게시 API (https://******.salesforce.com/services/data/v44.0/chatter/feed-elements
)의 파라미터에 「subjectId」의 기재는 없습니다만, 영어판 API 레퍼런스에는 「subjectId」의 기재가 있습니다.
실제로 cURL에서 "subjectId"를 붙이지 않고 요청을 던져 보면, "subjectId"가 없으면 오류가 발생하기 때문에 영어 버전 API 참조의 설명이 올바른 것 같습니다.
subjectId 없이 cURL 실행 시 오류$ ./push_salesforce_chatter_message_badrequest.sh
[ {
"errorCode" : "MISSING_ARGUMENT",
"message" : "Missing required 'subjectId' parameter."
} ]$
$
· 올바른 분의 자료
Chatter REST API 개발자 가이드 -> Post a Feed Item
・오류가 있는 분의 자료(파라미터의 기술이 낡은?)
Chatter REST API 개발자 가이드 (일본어 버전) -> 직접 메시지 보내기 (일본어 버전)
마지막으로
cURL 명령을 사용하면 Salesforce REST API뿐만 아니라 Chatter REST API도 실행할 수 있습니다.
이상이 됩니다.
Reference
이 문제에 관하여(cURL 명령과 쉘 스크립트에서 Salesforce Chatter REST API를 실행하여 Chatter 메시지 게시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/na0AaooQ/items/037434830b69e9b45ffd
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
이 기사의 cURL을 실행하는 환경은 다음과 같습니다.
OS
기계 종류
OS 버전
커널 버전
Mac
MacBook PRO (Retina)
macOS Mojave 10.14.1
Darwin Kernel Version 18.2.0
Chatter 메시지 게시자(Chatter REST API 호출자)의 Salesforce 조직 버전은 다음과 같습니다.
버전
API 버전
Salesforce Winter '19
Salesforce.com Enterprise Web Services API 버전 44.0
참고 자료
Salesforce 사의 Chatter REST API 레퍼런스를 참고하였습니다. 고마워요.
Chatter REST API 개발자 가이드 -> Post a Feed Item
Chatter REST API 개발자 가이드 (일본어 버전) -> 직접 메시지 보내기 (일본어 버전)
cURL 명령으로 Salesforce REST API에 연결하기 위한 사전 준비
(1) Salesforce 측에서 Chatter REST API를 호출 할 수 있도록 설정
Chatter REST API를 호출할 수 있도록 Salesforce 측에서 "로그인 IP 주소 제한"설정 등을 해 둘 필요가 있습니다. 설정 순서는 다음 기사를 참조하십시오.
PHP5에서 Salesforce REST API 실행 (사용자 정의 개체에 레코드 추가)
(2) cURL 명령 실행 머신의 OpenSSL 버전을 확인합니다.
다음 기사와 마찬가지로 cURL 명령을 실행하는 시스템에는 Chatter REST API에 연결하는 데 필요한 OpenSSL 1.0.1 이상이 설치되어 있어야 합니다. 자세한 내용은 아래 기사를 참조하십시오.
cURL 명령으로 Salesforce REST API 실행
cURL 명령으로 Salesforce Chatter에 직접 메시지를 게시하는 예
(1) cURL 명령으로 Chatter에 메시지를 게시하는 스크립트를 작성합니다.
다음과 같은 스크립트를 작성합니다.
$ vi push_salesforce_chatter_message.sh
push_salesforce_chatter_message.sh#!/bin/sh
export SFDC_HOST="login.salesforce.com"
export SFDC_API_VER="v44.0"
export SFDC_CLIENT_ID="Salesforceの「設定」->「ビルド」->「作成」->「アプリケーション」のChatter REST API接続用アプリケーションの「コンシューマ鍵」(OAuthコンシューマキー文字列)を記載します。"
export SFDC_CLIENT_SECRET="Salesforceの「設定」->「ビルド」->「作成」->「アプリケーション」のChatter REST API接続用アプリケーションの「コンシューマの秘密」(OAuthコンシューマシークレット文字列)を記載します。"
export SFDC_CLIENT_USERNAME="Chatter REST APIを有効化しているSalesforceユーザアカウント名を記載します。"
export SFDC_CLIENT_AUTHENTICATE_PASSWORD="Chatter REST APIを有効化しているSalesforceユーザアカウントのパスワードを記載します。"
## Chatterメッセージ投稿先のSalesforceユーザIDを指定する
SFDC_USER_ID="005**********"
## ChatterグループID等を指定す
## ChatterグループIDはChatterグループURLの以下g=の部分の事( https://ap7.salesforce.com/_ui/core/chatter/groups/GroupProfilePage?g=0F9************ )
SFDC_CHATTER_GROUP_ID="0F9************"
## Chatter REST APIのアクセストークンを取得する
SFDC_AUTH_RESP=`curl -s https://${SFDC_HOST}/services/oauth2/token -d "grant_type=password" -d "client_id=${SFDC_CLIENT_ID}" -d "client_secret=${SFDC_CLIENT_SECRET}" -d "username=$SFDC_CLIENT_USERNAME" -d "password=${SFDC_CLIENT_AUTHENTICATE_PASSWORD}"`=
## 取得したChatter REST APIのアクセストークンをセットする
SFDC_ACCESS_TOKEN=`echo "${SFDC_AUTH_RESP}" | awk 'BEGIN{FS="access_token\":"}{print $2}' | awk 'BEGIN{FS=","}{print $1}' | sed -e 's/\"//g'`
## 取得したChatter REST APIのSalesforceインスタンスURLをセットする
SFDC_INSTANCE_URL=`echo "${SFDC_AUTH_RESP}" | awk 'BEGIN{FS="instance_url\":"}{print $2}' | awk 'BEGIN{FS=","}{print $1}' | sed -e 's/\"//g'`
## Chatterメッセージ投稿本文に付加する文字列
SFDC_CHATTER_POST_DATE=`date '+%Y%m%d_%H%m%S'`
## Chatter REST APIを呼び出して、Chatterへメッセージを投稿する
curl -s -X POST ${SFDC_INSTANCE_URL}/services/data/${SFDC_API_VER}/chatter/feed-elements \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${SFDC_ACCESS_TOKEN}" \
-H "X-PrettyPrint:1" \
-d '{
"body" : {
"messageSegments" : [
{
"type": "Text",
"text": "curlからのテストメッセージ 投稿日時=['${SFDC_CHATTER_POST_DATE}'] "
},
{
"type": "Mention",
"id": "'${SFDC_USER_ID}'"
}
]
},
"feedElementType": "FeedItem",
"subjectId": "'${SFDC_CHATTER_GROUP_ID}'"
}'
작성한 쉘 스크립트의 구문 체크를 실시합니다. 아래와 같이 아무것도 표시되지 않으면 구문상의 문제는 없습니다.
$ sh -n push_salesforce_chatter_message.sh
$
작성한 쉘 스크립트에 실행 권한을 부여합니다.
$ chmod 750 push_salesforce_chatter_message.sh
$
(2) 위에서 작성한 쉘 스크립트를 실행하여 Chatter에 메시지를 게시합니다.
다음과 같이 스크립트를 실행하여 Chatter에 메시지를 게시합니다.
스크립트 실행의 결과로 Chatter REST API의 응답이 어긋나게 표시되지만, 이제 Chatter에 메시지가 게시됩니다.
$ ./push_salesforce_chatter_message.sh
{
"actor" : {
"additionalLabel" : null,
(中略)
},
"body" : {
"isRichText" : false,
"messageSegments" : [ {
"text" : "curlからのテストメッセージ 投稿日時=[20181225_011241] ",
"type" : "Text"
}, {
"accessible" : true,
"name" : "** **",
"record" : {
(中略)
"visibility" : "AllUsers"
}
(3) Salesforce에 로그인하여 Chatter에게 메시지가 도착했는지 확인합니다.
Salesforce에 로그인하여 cURL에서 게시한 메시지가 Chatter에 도착했는지 확인합니다.
보충사항
Salesforce Chatter REST API 참조 (일본어 버전)에서는 Chatter 메시지 게시 API (https://******.salesforce.com/services/data/v44.0/chatter/feed-elements
)의 파라미터에 「subjectId」의 기재는 없습니다만, 영어판 API 레퍼런스에는 「subjectId」의 기재가 있습니다.
실제로 cURL에서 "subjectId"를 붙이지 않고 요청을 던져 보면, "subjectId"가 없으면 오류가 발생하기 때문에 영어 버전 API 참조의 설명이 올바른 것 같습니다.
subjectId 없이 cURL 실행 시 오류$ ./push_salesforce_chatter_message_badrequest.sh
[ {
"errorCode" : "MISSING_ARGUMENT",
"message" : "Missing required 'subjectId' parameter."
} ]$
$
· 올바른 분의 자료
Chatter REST API 개발자 가이드 -> Post a Feed Item
・오류가 있는 분의 자료(파라미터의 기술이 낡은?)
Chatter REST API 개발자 가이드 (일본어 버전) -> 직접 메시지 보내기 (일본어 버전)
마지막으로
cURL 명령을 사용하면 Salesforce REST API뿐만 아니라 Chatter REST API도 실행할 수 있습니다.
이상이 됩니다.
Reference
이 문제에 관하여(cURL 명령과 쉘 스크립트에서 Salesforce Chatter REST API를 실행하여 Chatter 메시지 게시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/na0AaooQ/items/037434830b69e9b45ffd
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
(1) Salesforce 측에서 Chatter REST API를 호출 할 수 있도록 설정
Chatter REST API를 호출할 수 있도록 Salesforce 측에서 "로그인 IP 주소 제한"설정 등을 해 둘 필요가 있습니다. 설정 순서는 다음 기사를 참조하십시오.
PHP5에서 Salesforce REST API 실행 (사용자 정의 개체에 레코드 추가)
(2) cURL 명령 실행 머신의 OpenSSL 버전을 확인합니다.
다음 기사와 마찬가지로 cURL 명령을 실행하는 시스템에는 Chatter REST API에 연결하는 데 필요한 OpenSSL 1.0.1 이상이 설치되어 있어야 합니다. 자세한 내용은 아래 기사를 참조하십시오.
cURL 명령으로 Salesforce REST API 실행
cURL 명령으로 Salesforce Chatter에 직접 메시지를 게시하는 예
(1) cURL 명령으로 Chatter에 메시지를 게시하는 스크립트를 작성합니다.
다음과 같은 스크립트를 작성합니다.
$ vi push_salesforce_chatter_message.sh
push_salesforce_chatter_message.sh#!/bin/sh
export SFDC_HOST="login.salesforce.com"
export SFDC_API_VER="v44.0"
export SFDC_CLIENT_ID="Salesforceの「設定」->「ビルド」->「作成」->「アプリケーション」のChatter REST API接続用アプリケーションの「コンシューマ鍵」(OAuthコンシューマキー文字列)を記載します。"
export SFDC_CLIENT_SECRET="Salesforceの「設定」->「ビルド」->「作成」->「アプリケーション」のChatter REST API接続用アプリケーションの「コンシューマの秘密」(OAuthコンシューマシークレット文字列)を記載します。"
export SFDC_CLIENT_USERNAME="Chatter REST APIを有効化しているSalesforceユーザアカウント名を記載します。"
export SFDC_CLIENT_AUTHENTICATE_PASSWORD="Chatter REST APIを有効化しているSalesforceユーザアカウントのパスワードを記載します。"
## Chatterメッセージ投稿先のSalesforceユーザIDを指定する
SFDC_USER_ID="005**********"
## ChatterグループID等を指定す
## ChatterグループIDはChatterグループURLの以下g=の部分の事( https://ap7.salesforce.com/_ui/core/chatter/groups/GroupProfilePage?g=0F9************ )
SFDC_CHATTER_GROUP_ID="0F9************"
## Chatter REST APIのアクセストークンを取得する
SFDC_AUTH_RESP=`curl -s https://${SFDC_HOST}/services/oauth2/token -d "grant_type=password" -d "client_id=${SFDC_CLIENT_ID}" -d "client_secret=${SFDC_CLIENT_SECRET}" -d "username=$SFDC_CLIENT_USERNAME" -d "password=${SFDC_CLIENT_AUTHENTICATE_PASSWORD}"`=
## 取得したChatter REST APIのアクセストークンをセットする
SFDC_ACCESS_TOKEN=`echo "${SFDC_AUTH_RESP}" | awk 'BEGIN{FS="access_token\":"}{print $2}' | awk 'BEGIN{FS=","}{print $1}' | sed -e 's/\"//g'`
## 取得したChatter REST APIのSalesforceインスタンスURLをセットする
SFDC_INSTANCE_URL=`echo "${SFDC_AUTH_RESP}" | awk 'BEGIN{FS="instance_url\":"}{print $2}' | awk 'BEGIN{FS=","}{print $1}' | sed -e 's/\"//g'`
## Chatterメッセージ投稿本文に付加する文字列
SFDC_CHATTER_POST_DATE=`date '+%Y%m%d_%H%m%S'`
## Chatter REST APIを呼び出して、Chatterへメッセージを投稿する
curl -s -X POST ${SFDC_INSTANCE_URL}/services/data/${SFDC_API_VER}/chatter/feed-elements \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${SFDC_ACCESS_TOKEN}" \
-H "X-PrettyPrint:1" \
-d '{
"body" : {
"messageSegments" : [
{
"type": "Text",
"text": "curlからのテストメッセージ 投稿日時=['${SFDC_CHATTER_POST_DATE}'] "
},
{
"type": "Mention",
"id": "'${SFDC_USER_ID}'"
}
]
},
"feedElementType": "FeedItem",
"subjectId": "'${SFDC_CHATTER_GROUP_ID}'"
}'
작성한 쉘 스크립트의 구문 체크를 실시합니다. 아래와 같이 아무것도 표시되지 않으면 구문상의 문제는 없습니다.
$ sh -n push_salesforce_chatter_message.sh
$
작성한 쉘 스크립트에 실행 권한을 부여합니다.
$ chmod 750 push_salesforce_chatter_message.sh
$
(2) 위에서 작성한 쉘 스크립트를 실행하여 Chatter에 메시지를 게시합니다.
다음과 같이 스크립트를 실행하여 Chatter에 메시지를 게시합니다.
스크립트 실행의 결과로 Chatter REST API의 응답이 어긋나게 표시되지만, 이제 Chatter에 메시지가 게시됩니다.
$ ./push_salesforce_chatter_message.sh
{
"actor" : {
"additionalLabel" : null,
(中略)
},
"body" : {
"isRichText" : false,
"messageSegments" : [ {
"text" : "curlからのテストメッセージ 投稿日時=[20181225_011241] ",
"type" : "Text"
}, {
"accessible" : true,
"name" : "** **",
"record" : {
(中略)
"visibility" : "AllUsers"
}
(3) Salesforce에 로그인하여 Chatter에게 메시지가 도착했는지 확인합니다.
Salesforce에 로그인하여 cURL에서 게시한 메시지가 Chatter에 도착했는지 확인합니다.
보충사항
Salesforce Chatter REST API 참조 (일본어 버전)에서는 Chatter 메시지 게시 API (https://******.salesforce.com/services/data/v44.0/chatter/feed-elements
)의 파라미터에 「subjectId」의 기재는 없습니다만, 영어판 API 레퍼런스에는 「subjectId」의 기재가 있습니다.
실제로 cURL에서 "subjectId"를 붙이지 않고 요청을 던져 보면, "subjectId"가 없으면 오류가 발생하기 때문에 영어 버전 API 참조의 설명이 올바른 것 같습니다.
subjectId 없이 cURL 실행 시 오류$ ./push_salesforce_chatter_message_badrequest.sh
[ {
"errorCode" : "MISSING_ARGUMENT",
"message" : "Missing required 'subjectId' parameter."
} ]$
$
· 올바른 분의 자료
Chatter REST API 개발자 가이드 -> Post a Feed Item
・오류가 있는 분의 자료(파라미터의 기술이 낡은?)
Chatter REST API 개발자 가이드 (일본어 버전) -> 직접 메시지 보내기 (일본어 버전)
마지막으로
cURL 명령을 사용하면 Salesforce REST API뿐만 아니라 Chatter REST API도 실행할 수 있습니다.
이상이 됩니다.
Reference
이 문제에 관하여(cURL 명령과 쉘 스크립트에서 Salesforce Chatter REST API를 실행하여 Chatter 메시지 게시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/na0AaooQ/items/037434830b69e9b45ffd
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ vi push_salesforce_chatter_message.sh
#!/bin/sh
export SFDC_HOST="login.salesforce.com"
export SFDC_API_VER="v44.0"
export SFDC_CLIENT_ID="Salesforceの「設定」->「ビルド」->「作成」->「アプリケーション」のChatter REST API接続用アプリケーションの「コンシューマ鍵」(OAuthコンシューマキー文字列)を記載します。"
export SFDC_CLIENT_SECRET="Salesforceの「設定」->「ビルド」->「作成」->「アプリケーション」のChatter REST API接続用アプリケーションの「コンシューマの秘密」(OAuthコンシューマシークレット文字列)を記載します。"
export SFDC_CLIENT_USERNAME="Chatter REST APIを有効化しているSalesforceユーザアカウント名を記載します。"
export SFDC_CLIENT_AUTHENTICATE_PASSWORD="Chatter REST APIを有効化しているSalesforceユーザアカウントのパスワードを記載します。"
## Chatterメッセージ投稿先のSalesforceユーザIDを指定する
SFDC_USER_ID="005**********"
## ChatterグループID等を指定す
## ChatterグループIDはChatterグループURLの以下g=の部分の事( https://ap7.salesforce.com/_ui/core/chatter/groups/GroupProfilePage?g=0F9************ )
SFDC_CHATTER_GROUP_ID="0F9************"
## Chatter REST APIのアクセストークンを取得する
SFDC_AUTH_RESP=`curl -s https://${SFDC_HOST}/services/oauth2/token -d "grant_type=password" -d "client_id=${SFDC_CLIENT_ID}" -d "client_secret=${SFDC_CLIENT_SECRET}" -d "username=$SFDC_CLIENT_USERNAME" -d "password=${SFDC_CLIENT_AUTHENTICATE_PASSWORD}"`=
## 取得したChatter REST APIのアクセストークンをセットする
SFDC_ACCESS_TOKEN=`echo "${SFDC_AUTH_RESP}" | awk 'BEGIN{FS="access_token\":"}{print $2}' | awk 'BEGIN{FS=","}{print $1}' | sed -e 's/\"//g'`
## 取得したChatter REST APIのSalesforceインスタンスURLをセットする
SFDC_INSTANCE_URL=`echo "${SFDC_AUTH_RESP}" | awk 'BEGIN{FS="instance_url\":"}{print $2}' | awk 'BEGIN{FS=","}{print $1}' | sed -e 's/\"//g'`
## Chatterメッセージ投稿本文に付加する文字列
SFDC_CHATTER_POST_DATE=`date '+%Y%m%d_%H%m%S'`
## Chatter REST APIを呼び出して、Chatterへメッセージを投稿する
curl -s -X POST ${SFDC_INSTANCE_URL}/services/data/${SFDC_API_VER}/chatter/feed-elements \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${SFDC_ACCESS_TOKEN}" \
-H "X-PrettyPrint:1" \
-d '{
"body" : {
"messageSegments" : [
{
"type": "Text",
"text": "curlからのテストメッセージ 投稿日時=['${SFDC_CHATTER_POST_DATE}'] "
},
{
"type": "Mention",
"id": "'${SFDC_USER_ID}'"
}
]
},
"feedElementType": "FeedItem",
"subjectId": "'${SFDC_CHATTER_GROUP_ID}'"
}'
$ sh -n push_salesforce_chatter_message.sh
$
$ chmod 750 push_salesforce_chatter_message.sh
$
$ ./push_salesforce_chatter_message.sh
{
"actor" : {
"additionalLabel" : null,
(中略)
},
"body" : {
"isRichText" : false,
"messageSegments" : [ {
"text" : "curlからのテストメッセージ 投稿日時=[20181225_011241] ",
"type" : "Text"
}, {
"accessible" : true,
"name" : "** **",
"record" : {
(中略)
"visibility" : "AllUsers"
}
Salesforce Chatter REST API 참조 (일본어 버전)에서는 Chatter 메시지 게시 API (https://******.salesforce.com/services/data/v44.0/chatter/feed-elements
)의 파라미터에 「subjectId」의 기재는 없습니다만, 영어판 API 레퍼런스에는 「subjectId」의 기재가 있습니다.
실제로 cURL에서 "subjectId"를 붙이지 않고 요청을 던져 보면, "subjectId"가 없으면 오류가 발생하기 때문에 영어 버전 API 참조의 설명이 올바른 것 같습니다.
subjectId 없이 cURL 실행 시 오류
$ ./push_salesforce_chatter_message_badrequest.sh
[ {
"errorCode" : "MISSING_ARGUMENT",
"message" : "Missing required 'subjectId' parameter."
} ]$
$
· 올바른 분의 자료
Chatter REST API 개발자 가이드 -> Post a Feed Item
・오류가 있는 분의 자료(파라미터의 기술이 낡은?)
Chatter REST API 개발자 가이드 (일본어 버전) -> 직접 메시지 보내기 (일본어 버전)
마지막으로
cURL 명령을 사용하면 Salesforce REST API뿐만 아니라 Chatter REST API도 실행할 수 있습니다.
이상이 됩니다.
Reference
이 문제에 관하여(cURL 명령과 쉘 스크립트에서 Salesforce Chatter REST API를 실행하여 Chatter 메시지 게시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/na0AaooQ/items/037434830b69e9b45ffd
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(cURL 명령과 쉘 스크립트에서 Salesforce Chatter REST API를 실행하여 Chatter 메시지 게시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/na0AaooQ/items/037434830b69e9b45ffd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)