chatter에서 Slack로 전송 (전편)

chatter의 내용을 Slack에 전송하는 방법을 소개합니다.
이 장에서는 chatter의 게시 문장을 미리 지정한 Slack의 목적지로 전송하는 방법을 소개합니다.

후편에서는 Slack의 전송시에 멘션을 붙이거나 복수의 채널에 전송하는 방법을 소개하고 있습니다
htps : // 코 m / 쇼고 스가 노야 / ms / 에 7 에바 571

이전 준비



이 기사를 참고로 Slack에 Incoming Webhook을 설정합니다.

【Slack】Slack에서 Bot을 개발하는 방법 【GAS】
htps : // 코 m / 쇼고 스가 노야 / ms / b6 아 4f5256c0 944 아 0f5

SF 준비



원격 사이트 준비




설정 화면의 빠른 검색에서 "원격 사이트 사이트 설정 화면"을 엽니다.



새 원격 사이트를 클릭합니다.



원격 사이트 이름
 → 적당한 이름으로 괜찮습니다
원격 사이트 URL
 →「 htps // // 뽀오 ks. scck. 이 m 」라고 입력합니다

Apex 클래스 준비




설정 화면의 빠른 검색에서 'Apex 클래스'를 엽니다.


새로 만들기

publishToSlackBasic
public class publishToSlackBasic{

    public class slackRequest { 
        @InvocableVariable(label='Slack Message' required=true) 
        public String slackMessage; 
        @InvocableVariable(label='Channel/User to post to' required=true) 
        public String channel; 
    } 

    @InvocableMethod(label='Publish to Slack')
    public static void publishToSlack(List<slackRequest> requests) {
        String webhookURL='ここにwebhockURLを入力する'; 
        for(slackRequest r:requests){
            JSONGenerator gen = JSON.createGenerator(true);
            gen.writeStartObject(); //Inserts {
            gen.writeStringField('text', r.slackMessage);
            gen.writeStringField('channel', r.channel);
            gen.writeStringField('username', 'Salesforce Bot');
            gen.writeStringField('icon_emoji', ':sf:');
            gen.writeEndObject(); //Inserts }

            String body = gen.getAsString(); //Translates JSONGenerator to string to be passed to callout
            System.debug(body);
            System.enqueueJob(new qCallOut(webhookURL, 'POST', body));
        } 
    }

    public class qCallOut implements System.Queueable, Database.AllowsCallouts {

        private final String url;
        private final String method;
        private final String body;

        public qCallOut(String url, String method, String body) {
            this.url = url;
            this.method = method;
            this.body = body;
        }

        public void execute(System.QueueableContext ctx) {
            HttpRequest req = new HttpRequest();
            req.setEndpoint(url);
            req.setMethod(method);
            req.setBody(body);
            Http http = new Http();
            HttpResponse res = http.send(req);
        }
    }
}
String webhookURL='ここにwebhockURLを入力する'; 의 부분은 자신의 환경에 맞추어 주세요
gen.writeStringField('username', 'Salesforce Bot');gen.writeStringField('icon_emoji', ':sf:');이 부분은 bot의 이름이나 아이콘이므로 기호로 설정하십시오.

프로세스 빌더 준비




설정 화면의 빠른 검색에서 '프로세스 빌더'를 엽니다.




새 버튼 클릭 후 새 프로세스 정보를 입력합니다.
프로세스 이름
 → 적당한 이름으로 괜찮습니다
API 참조 이름
 → 적당한 이름으로 괜찮습니다
프로세스를 시작하는 타이밍
 →「레코드가 변경되었을 때」로 설정합니다





개체를 클릭한 후 개체를 선택합니다.
'피드 항목'을 선택합니다.

프로세스 시작 트리거를 선택합니다.
chatter를 게시할 때만 또는 게시하거나 편집할 때를 선택합니다.
이번에는 '만들기 또는 편집'을 선택하고 저장합니다.





조건 추가를 클릭합니다.
이번에는 트리거를 "chatter를 게시하거나 편집했을 때"로 설정했기 때문에,
액션을 실행할 조건 없음을 선택하고 저장합니다.




액션 추가
액션 타입
 →Apex
액션 이름
 → 적당한 이름으로 괜찮습니다
Apex 클래스
 →Publish to Slack

슬랙 메시지
→ Slack에 전송할 문자열을 설정할 수 있습니다.
Channel/User to post to
 →Slack의 수신처를 설정할 수 있습니다

chatter의 내용은 [FeedItem].Body에 저장됩니다.
chatter 메시지를 그대로 전달하려면 Slack Message에서 다음을 설정합니다.
종류
 →수식

 →[FeedItem].Body

단지 이대로는 p태그가 그대로 Slack에 출력되어 버리므로,
값을 다음과 같이 변경하면 출력문이 자연스러운 모양이 됩니다.
(p 태그를 개행으로 치환하는 처리입니다)

SUBSTITUTE(SUBSTITUTE([FeedItem].Body, "</p>", BR()) , "<p>", "")
또한 다음과 같은 출력 형식을 설정할 수 있습니다.

파일 게시시 "파일 첨부가 있습니다"라고 전송하고 싶습니다.
if([FeedItem].HasContent,"ファイル添付があります","")
기회 이름 출력
[FeedItem].Parent:Opportunity.Name
설정 예를 아래에 적습니다.
【Slack Message】
"chatterから送信されました" + BR() + 
[FeedItem].Parent:Opportunity.Name + BR() + 
SUBSTITUTE(SUBSTITUTE([FeedItem].Body, "</p>", BR()) , "<p>", "") + BR() + 

if([FeedItem].HasContent,"ファイル添付があります","")
【Slackへ出力される文章】
chatterから送信されました
商談名
投稿メッセージ

ファイル添付があります

설정이 완료되면 저장 버튼을 누릅니다.



마지막으로 활성화를 클릭합니다.

동작 확인





chatter에 투고하고, Slack에 전송되고 있으면 완성입니다!

안내



후편에서는 Slack의 전송시에 멘션을 붙이거나 복수의 채널에 전송하는 방법을 소개하고 있습니다
htps : // 코 m / 쇼고 스가 노야 / ms / 에 7 에바 571


참고



salesforce에서 레코드가 등록되면 slack에 알림을 보내는 방법
htps : // bg. 인 t 등 c r. 네 t/아 r ゔぇ s/2018

Salesforce 및 Lightning 플랫폼의 객체 참조 "FeedItem"
htps : //에서 ゔぇぺぺr. 글쎄. 이 m/도 cs/아 tぁs. 그럼 jp. 오 b ct ct_ 레후 렌세. 메타/오지오ct_레후오렌세/s후레세_아피_오비지오cts_후에에에 m. htm

좋은 웹페이지 즐겨찾기