2017.11.09

Salesforce1と携帯電話の機能をあわせて活用してみよう

  • このエントリーをはてなブックマークに追加
  • follow us in feedly

はじめに

みなさま、こんにちは。
テラスカイ西日本の勝田です。

Salesforce1は携帯電話にインストールするだけで様々な機能を利用できますが、
携帯電話の独自の機能と組み合わせると、より便利に利用することができます。
今回は2つほど、例を紹介してみたいと思います。

携帯電話の音声入力機能を利用する

iPhone、Android携帯共に、音声入力のキーボードが用意されています。
iPhoneでは標準で用意されていますが、Andoridの場合は機種によっては
インストールが必要な場合があります。
今回はAndroidのGoogle日本語入力を利用してみます。
利用方法は入力したい項目にフォーカスをあわせて、マイクボタンをタッチするだけです。

音声入力

この機能を利用すると外出先での活動入力など、ちょっとした入力は移動中などに
済ませてしまえます。
入力精度も日々改善されており、キーボードを使わなくなる日も近そうですね。

カメラで撮影した画像を添付する

Salesforce1では標準の機能でカメラで撮影した画像を投稿という形でアップロードすることができます。
では、Salesforce1から写真を投稿してみましょう。
ここでは営業の訪問時に取引先の社屋の写真を撮影し、登録するという作業を考えて見ます。

投稿のみ

投稿された画像はメモ&添付の関連リストに添付されています。
プレビューを押せば画像の内容を確認することは可能ですが、一手間かかりますね。
画像はClassicの標準画面ですが、Salesforce1でも
1)関連リストを表示
2)添付ファイルをタップ
と2手間かかってしまいます。
できれば取引先の項目の中に画像を表示したいですね。

取引先の詳細に画像が表示されるようにする

ここからは標準機能のみでは実現できませんので、Visualforceページで実現します。
Salesforce1から投稿された画像はContentDocumentLinkとしてメモ&添付に現れますので、
取引先のページから添付されている画像がJpegであれば、表示することにします。

ContentVerExtension

public class ContentVerExtension{

    private final String JPEG_EXT1 = 'JPG';
    private final String JPEG_EXT2 = 'JPEG';
    private final Account acct;

    public ContentVerExtension(ApexPages.StandardController controller) {
        this.acct = (Account)controller.getRecord();
    }

    public List<ContentVersion> getContentVersions(){
    
        Set<Id> docIds = new Set<id>();
        List<ContentDocumentLink> cntlink = [SELECT ContentDocumentId FROM ContentDocumentLink WHERE LinkedEntityId =:acct.Id];        
        for(ContentDocumentLink item : cntlink) {
            docIds.add(item.ContentDocumentId);
        }
       
        List<ContentVersion> cntVerList = [SELECT ID, FileExtension, ContentDocumentId FROM ContentVersion WHERE ContentDocumentId IN: docIds];
        List<ContentVersion> resList = new List<ContentVersion>();
        for(ContentVersion cv : cntVerList){
            String ext = cv.FileExtension;
            if(String.isBlank(ext)) {
                continue;
            } else {
                ext = ext.toUpperCase();
            }
            if(ext == JPEG_EXT1 || ext ==JPEG_EXT2){
                resList.add(cv);
            }
        }

        return resList;
    
    }

}
ContentVerExtension.cls

AccountPhotos.page

<apex:page standardController="Account" extensions="ContentVerExtension">
<apex:panelGrid > 
        <apex:repeat value="{!ContentVersions}" var="ContentVersion" id="theRepeat">
         <apex:image url="/sfc/servlet.shepherd/version/download/{!ContentVersion.Id}" width="240" height="180"/>
        </apex:repeat>
</apex:panelGrid> 
</apex:page>
AccountPhotos.page

動作確認

それでは再度、画像を投稿してみましょう。
Classicの標準では次のように見えます。

標準画面

Salesforce1では次のように見えます。

Salesforce1

注意点として、Salesforce1で表示を行うためには、Visualforceページの保存時に
「Lightning Experience、Salesforce1、Lightning コミュニティで利用可能」にチェックを
入れておく必要があります。

最後に

サンプルコードはSummer'17の環境でテストしています。
将来的にはSalesforce1の機能も拡充されてゆき、開発は必要なくなるとも考えられますが、
その必要性に応じて、処理を記述することが可能な点も
Saleforceのプラットフォームの優位性と考えます。
25 件

関連する記事