ランサーズ等のサービスを開発・運用する中で得た知識やノウハウを紹介しています。

thumbnail

Labels:  Ruby 投稿者:masaaki

Salesforceでサービス連携

こんにちは。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買収話とか、アインシュタインとか、鼻息荒い感じがいいですよね。
今後も注目していきたいと思います。

ランサーズではサービスを成長させてくれるエンジニア、デザイナーを募集しています!
ご興味がある方は、以下URLよりご応募ください。

Webエンジニア(Wantedly)
Rubyエンジニア(Wantedly)
フロントエンドエンジニア(Wantedly)
インフラエンジニア(Wantedly)
2017新卒エンジニア(Wantedly)
エンジニアインターン(Wantedly)
その他採用情報

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

Ruby Mechanize によるサービス監視のすすめ

こんにちわ。エンジニアの こじま です。 今回は,ランサーズのサービス品質を支える サービス監視システムのご紹介をします。 弊社プラットフォームは,複数の監視システムを導入して運用を実施しています。 システム 用途 (自社製)サービス監視システム サービス稼働 …

thumbnail
Rubyでデザインパターン入門

はじめまして。ランサーズのエンジニアのtomohiroです。 先日、社内勉強会をする事になり、そのお題としてデザインパターンをやったので、内容を少し共有しようと思います。自分はデザインパターンをあんまり勉強していなかったので、この機会にデザインパターンに触れて …