ランサーズ(Lancers)エンジニアブログ > Ruby > Salesforceでサービス連携

Salesforceでサービス連携

masaaki|2016年12月21日
Ruby

こんにちは。masaakiです。

前月の振り返り、今後の方針共有、メンバー紹介、表彰、交流を目的とした決騎会というイベントを毎月実施しています。
つい先日の決騎会でギターを弾く機会があり、死ぬまでに叶えたいドリームリスト100のひとつ「渋谷で大勢の前でライブ」が叶いました。しかもスタンディングオベーション。ありがとうございます。

さて、
ランサーズではSalesforceというCRM製品を導入しています。今回は、どうやって他サービスと繋いでいるかをご紹介します。

ランサーズサービスとの連動

PHPやRubyから接続しています。
Ruby on RailsからSoapforceで接続するのがカンタンです。

rails new salesforce_sample -d mysql
cd salesforce_sample/

Gemfileに追加

gem ‘soapforce’

以下、コンソールでの例です。

rails c
client = Soapforce::Client.new(:host => ‘test.salesforce.com’)
client.authenticate(:username => ‘ユーザー名’, :password => ‘パスワード’)
client.find_where(‘Account’, Name: ‘テスト株式会社’)

upsertも用意されています。存在してたらUPDATE、存在してなかったらINSERTになります。

client.upsert(‘Account’, ‘ClientID__c’, ClientID__c: 5000, Name: ‘テスト株式会社’)

外部キー(この例で言うClientID__c)は、Salesforce側で外部IDフラグをONにしておく必要があります。

チャットワークとの連動

今度はSalesforceからプッシュする方法。
SalesforceにChatterというチャットツールが用意されているのですが、
弊社ではチャットワークを愛用しています。

apexクラス ソース

public with sharing class HelloTest {

    private String myMessage = '';

    public void push() {
        String result = '';
        Http http = new Http();
        HttpRequest request = new HttpRequest();

        request.setEndpoint('https://api.chatwork.com/v1/rooms/ルームID/messages');
        request.setMethod('POST');
        request.setHeader('X-ChatWorkToken', ‘トークン’);
        request.setBody('body=Salesforceから送信');

        HttpResponse response = http.send(request);
        Integer status = response.getStatusCode();
        if (status == 200){
            myMessage = response.getBody();
        }else{
            myMessage = status.format() + response.getBody();
        }
    }

    public String message {
        get{
            return myMessage;
        }
    }
}

Visualforceソース

<apex:page controller="HelloTest">
    <h1>チャットワーク送信サンプル</h1>
    <apex:form >
    <apex:commandButton action="{!push}" value="チャットワーク送信"/>
    </apex:form>
    {!message}
</apex:page>

まとめ

Salesforceはクラウドサービスの老舗というかレジェンドになると思うんですが今年もTwitter買収話とか、アインシュタインとか、鼻息荒い感じがいいですよね。
今後も注目していきたいと思います。