SIL dan Tenaga Pemasaran

Pada artikel ini saya akan berbicara tentang bagaimana Anda dapat bekerja dengan Salesforce dari SIL.

SIL adalah bahasa pemrograman untuk tindakan otomatis dalam Atlassian Jira dan Confluence. Anda dapat mempelajari lebih lanjut tentang SIL di  sini .

Ada 3 opsi untuk bekerja dengan Salesforce dari SIL:

  1. Gunakan plugin  Power Salesforce Connector .
  2. Tulis fungsi Anda di SIL.
  3. Tulis ekstensi Anda untuk SIL .

Pada artikel ini, kita akan melihat dua opsi pertama. Anda dapat membaca tentang cara membuat ekstensi Anda sendiri untuk SIL di sini .

Tetapi sebelum beralih ke kode, Anda harus mengonfigurasi Salesforce.

Menyiapkan Tenaga Penjualan


Kami akan menggunakan API Salesforce Rest untuk bekerja dengan Salesforce, jadi pertama-tama kita perlu mengonfigurasi aplikasi yang terhubung.
Untuk mengonfigurasi aplikasi plug-in, buka gear -> Setup:



Pilih App -> App Manager:



Klik tombol New Connected App:



Pilih opsi untuk mengaktifkan OAuth (Aktifkan pengaturan OAuth). Instal  Akses Lengkap , klik tombol  Tambah dan kemudian tombol  Simpan .

Pada halaman berikutnya, di bawah pengaturan OAuth, kita akan melihat Kunci Konsumen dan opsi untuk membuka Rahasia Konsumen. Ingat dua parameter ini. Kami membutuhkan mereka untuk membuat koneksi dengan Salesforce.

Selain itu, Anda perlu membuat token rahasia pengguna. Untuk melakukan ini, buka Pengaturan Pengguna → Setel Ulang Token Keamanan Saya. Kunci pengguna rahasia baru akan dikirimkan ke email kami:



Sekarang kami memiliki semua yang kami butuhkan untuk bekerja dengan Salesforce dari SIL.

Konektor tenaga penjualan yang kuat


Konektor Power Salesforce memungkinkan Anda untuk bekerja dengan objek seperti di Salesforce sebagai Akun dan Peluang, di samping itu, Anda dapat menerima hasil kueri dalam SOQL. Anda dapat menemukan semua fungsi yang tersedia di plugin SIL di sini .

Keuntungan menggunakan plugin adalah Anda tidak perlu menulis fungsi SIL untuk bekerja dengan Salesforce dan memahami seluk-beluk API Salesforce Rest. Ini akan memungkinkan Anda untuk berkonsentrasi pada tugas bisnis, dan bukan pada tugas teknis.

Namun tentu saja, plugin ini juga memiliki sejumlah kelemahan:



Jadi, katakanlah kita memutuskan untuk menggunakan konektor Power Salesforce.

Pertama kita perlu menginstal plugin ini dari Atlassian Marketplace , dan kemudian membuat koneksi ke Salesforce dari Atlassian Jira (roda gigi -> kelola aplikasi -> Konfigurasi Koneksi SFDC):



Klik tombol Tambahkan koneksi:



Isi bidang yang diperlukan dan klik tombol Simpan. Saat memasukkan kata sandi, Anda harus memasukkan kata sandi pengguna dan kemudian kunci rahasia pengguna.

Sekarang kita dapat menulis kode dalam SIL.

Pertama, pilih Peluang dari Salesforce.

Ayo buka SIL Manager, buat file baru dan tulis kode berikut:

SFDCConnection sfdcConnection = connectToSalesforce("My SFDC Connection");
SFDCOpportunity opp = sfdcGetOpportunity(sfdcConnection, "0064F00000NKA7CQAX");
runnerLog(opp);

Seperti yang Anda lihat, untuk menulis data Peluang, kami hanya menulis 2 baris kode. Di baris pertama, kami terhubung ke Salesforce (saya menyebut koneksi saya Koneksi SFDC Saya). Di baris kedua, kami mendapatkan data dari Salesforce menggunakan Opportunity Id.

Untuk mengubah beberapa bidang dalam Peluang, kami akan menulis kode ini:

SFDCConnection sfdcConnection = connectToSalesforce("My SFDC Connection");
SFDCOpportunity opp;
opp.Description = "My new description";
sfdcUpdateOpportunity(sfdcConnection, "0064F00000NKA7CQAX", opp);

Seperti yang Anda lihat, kode ini cukup sederhana, dan di samping itu, dokumentasi untuk plugin berisi contoh untuk setiap fungsi yang diimplementasikan dalam plugin. Contohnya dapat ditemukan di  sini .

Tetapi bagaimana jika Konektor Tenaga Penjualan tidak cocok untuk Anda? Dalam hal ini, kita dapat membuat fungsi SIL kita sendiri.

Membuat fungsi SIL Anda sendiri


Pertama, buat fungsi koneksi Salesforce:

struct SFDCConnection {
    string access_token;
    string instance_url;
    string id;
    string token_type;
    string issued_at;
    string signature;
}

function connectToSalesforce(string consumer_key,
                      string consumer_secret,
                      string user_name,
                      string user_password) {
    HttpRequest request;
    HttpHeader header = httpCreateHeader("Content-Type", "application/json");
    request.headers += header;
    string dummyPayload;
    string url = "https://login.salesforce.com/services/oauth2/token";
    string url_string = "?grant_type=password&client_id=" + consumer_key+ 
                    "&client_secret=" + consumer_secret + 
                    "&username=" + user_name + 
                    "&password=" + user_password; 
    SFDCConnection connection = httpPost(url + url_string, request, dummyPayload);
    runnerLog(httpGetErrorMessage());
    return connection;
}

Pertama, kami membuat kerangka kerja berbasis JSON yang kembali dari Salesforce saat terhubung. Dan kemudian mereka menggunakan metode  https://login.salesforce.com/services/oauth2/token  untuk terhubung ke Salesforce.

Sekarang mari kita membuat fungsi untuk mengambil data Peluang. Untuk melakukan ini, kami menggunakan metode XX.X / sobjects / SObjectNam / id /:

struct Opportunity {
    string Id;
    string AccountId;
    string Name;
    string Description;
    string StageName;
    string OwnerId;
}

function getOppFromOppId(string access_token,
                string url,
                string oppId) {
    Opportunity result;
    HttpRequest request;
    HttpHeader header = httpCreateHeader("Content-Type", "application/json");
    request.headers += header;
    header = httpCreateHeader("Authorization", "Bearer " + access_token);
    request.headers += header;
    result = httpGet(url + "/services/data/v39.0/sobjects/Opportunity/" + oppId, request);
    return result;
}

Sekali lagi, kami mendefinisikan struktur untuk data Peluang, dan kemudian disebut metode API Salesforce Rest.

Sekarang mari kita menulis kode yang menggunakan fungsi kita:

SFDCConnection connection = connectToSalesforce(consumer_key, consumer_secret, user_name, user_password);
Opportunity opp = getOppFromOppId(connection.access_token, connection.instance_url, "0064F00000NKA7CQAX");
runnerLog(opp);

Kami mendapat 2 baris kode yang sama. Namun, kode lengkap kami terlihat seperti ini:

struct SFDCConnection {
    string access_token;
    string instance_url;
    string id;
    string token_type;
    string issued_at;
    string signature;
}

function connectToSalesforce(string consumer_key,
                      string consumer_secret,
                      string user_name,
                      string user_password) {
    HttpRequest request;
    HttpHeader header = httpCreateHeader("Content-Type", "application/json");
    request.headers += header;
    string dummyPayload;
    string url = "https://login.salesforce.com/services/oauth2/token";
    string url_string = "?grant_type=password&client_id=" + consumer_key+ 
                    "&client_secret=" + consumer_secret + 
                    "&username=" + user_name + 
                    "&password=" + user_password; 
    SFDCConnection connection = httpPost(url + url_string, request, dummyPayload);
    runnerLog(httpGetErrorMessage());
    return connection;
}

struct Opportunity {
    string Id;
    string Name;
    string Description;
    string StageName;
    string OwnerId;
}

function getOppFromOppId(string access_token,
                string url,
                string oppId) {
    Opportunity result;
    HttpRequest request;
    HttpHeader header = httpCreateHeader("Content-Type", "application/json");
    request.headers += header;
    header = httpCreateHeader("Authorization", "Bearer " + access_token);
    request.headers += header;
    result = httpGet(url + "/services/data/v39.0/sobjects/Opportunity/" + oppId, request);
    return result;
}

string consumer_key = "your consumer key";
string consumer_secret = "your consumer secret";  
string user_name = "your user name";
string user_password = "password and user secret token";

SFDCConnection connection = connectToSalesforce(consumer_key, consumer_secret, user_name, user_password);
Opportunity opp = getOppFromOppId(connection.access_token, connection.instance_url, "0064F00000NKA7CQAX");
runnerLog(opp);

Jika Anda ingin, misalnya, memperbarui Peluang, maka Anda perlu mengimplementasikan fungsi SIL Anda untuk ini, menggunakan API Salesforce Rest.

Selain itu, seperti yang dapat dilihat pada contoh kami, kami menerima bidang berikut dari Peluang: id, nama, deskripsi, stagename, dan pemilik.

Misalkan Anda ingin menambahkan bidang akunid. Untuk melakukan ini, Anda perlu mengubah struktur sebagai berikut:

struct Opportunity {
    string Id;
    string Name;
    string Description;
    string StageName;
    string OwnerId;
    string AccountId;
}

Kami telah menambahkan bidang AccountId di akhir struktur.

Hal ini dapat dilihat dari contoh-contoh bahwa jika Anda menulis fungsi SIL Anda, Anda dapat menerapkan panggilan ke metode API Salesforce Rest lainnya, tetapi untuk ini Anda perlu menghabiskan lebih banyak waktu menulis kode Anda. Tapi sekali lagi, gratis.

All Articles