আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন দেখুন। তথ্য
ভার্সন: 2.0.2
আপনার Salesforce অ্যাকাউন্টে ডেটা অ্যাক্সেস করা। ডেটা যোগ, আপডেট, পুনরুদ্ধার ও কোয়েরি করা।
এই এক্সটেনশন কনফিগার ও ব্যবহার করার জন্য এই কন্টেন্ট রেফারেন্স প্রদান করে।
পূর্বশর্ত
এই এক্সটেনশন কনফিগার ও ব্যবহার করার জন্য এই কন্টেন্ট রেফারেন্স প্রদান করে। ExtensionCallout নীতি ব্যবহার করে API প্রক্সি থেকে এক্সটেনশন ব্যবহার করার আগে, আপনাকে অবশ্যই:
RSA x509 প্রাইভেট কী বা সার্টিফিকেশন পেয়ার তৈরি করুন।
এক্সটেনশন কনফিগার করার সময় আপনি ব্যক্তিগত কী (.key) ক্রেডেনশিয়াল হিসেবে ব্যবহার করবেন। আপনি একটি কানেক্ট করা অ্যাপ তৈরি করার সময় সার্টিফিকেট (.crt) ফাইল ব্যবহার করবেন যা এক্সটেনশনকে Salesforce-এ অ্যাক্সেস দেবে।
openssl req -x509 -sha256 -nodes -days 36500 -newkey rsa:2048 -keyout salesforce.key -out salesforce.crtকানেক্ট করা অ্যাপ সেট-আপ করুন।
Salesforce কানেক্ট করা অ্যাপ, Salesforce এক্সটেনশনের অ্যাক্সেস প্রদান করবে। অ্যাপ সেট-আপ করার নির্দেশাবলী দেখুন।
কানেক্ট করা অ্যাপের জন্য কনজিউমার কী পান। অ্যাপের সাথে যাচাই করার সময় এক্সটেনশন এটি ব্যবহার করবে।
- Salesforce সেট-আপে, বাঁদিকের নেভিগেশন থেকে, অ্যাপ > অ্যাপ ম্যানেজার বিকল্পে যান।
- তালিকায়, আপনার তৈরি করা কানেক্ট করা অ্যাপটি খুঁজে নিন।
- অ্যাপ্লিকেশনের সারিতে ডানদিকে থাকা ড্রপ-ডাউন মেনু থেকে, দেখুন বিকল্পে ক্লিক করুন।
- API (OAuth সেটিংস চালু করুন) বিকল্পের মধ্যে, গ্রাহক কী খুঁজে বের করুন এবং এক্সটেনশন কনফিগার করার সময় ব্যবহারের জন্য এর ভ্যালু কোনও নিরাপদ জায়গায় কপি করুন।
এক্সটেনশন অ্যাক্সেস করার জন্য কানেক্ট করা অ্যাপ সেট-আপ করা
Salesforce এক্সটেনশন Salesforce অ্যাক্সেস করার আগে, আপনাকে একটি Salesforce কানেক্ট করা অ্যাপ তৈরি করতে হবে যার মাধ্যমে এক্সটেনশনটি Salesforce-এর সাথে কানেক্ট করতে পারবে।
Salesforce-এ, কানেক্ট করা অ্যাপ হল এমন একটি উপায় যার মাধ্যমে এক্সটার্নাল অ্যাপ্লিকেশন API-এর মাধ্যমে Salesforce-এর সাথে কানেক্ট করতে পারে।
কানেক্ট করা অ্যাপ সেট-আপ করতে
- Salesforce-এ সাইন-ইন করুন।
- উপরে ডানদিকে গিয়ার আইকনে ক্লিক করুন, তারপর সেট-আপ করুন বিকল্পে ক্লিক করুন।
- বাঁদিকের নেভিগেশনে, অ্যাপ > অ্যাপ ম্যানেজার বিকল্প বড় করে দেখুন।
- অ্যাপ ম্যানেজার পৃষ্ঠায়, নতুন কানেক্ট করা অ্যাপ বিকল্পে ক্লিক করুন।
- প্রাথমিক তথ্য বিকল্পের মধ্যে, প্রয়োজনীয় ফিল্ড পূরণ করুন। এই মানগুলি বুককিপিংয়ের জন্য; এক্সটেনশন এগুলি ব্যবহার করে না।
- API (OAuth সেটিংস চালু করুন) বিকল্পের মধ্যে, OAuth সেটিংস চালু করুন চেকবক্স বেছে নিন।
- এক্সটেনশন এটি ব্যবহার না করলেও, একটি কলব্যাক URL লিখুন। আপনি
http://localhost/বা অন্য কোনও প্লেসহোল্ডার হোস্ট ব্যবহার করতে পারেন। - ডিজিটাল স্বাক্ষর ব্যবহার করুন চেকবক্স বেছে নিন।
- ডিজিটাল স্বাক্ষর ব্যবহার করুন বিকল্পের মধ্যে, আগে তৈরি করা
salesforce.crtখুঁজে পেতে ও আপলোড করতে ফাইল বেছে নিন বিকল্পে ক্লিক করুন। - বেছে নেওয়া OAuth স্কোপ বিভাগে, নিম্নলিখিতগুলি যোগ করুন যাতে সেগুলি বেছে নেওয়া OAuth স্কোপ-এর অধীনে থাকে:
- আপনার ডেটা অ্যাক্সেস ও ম্যানেজ করা (api)
- যেকোনও সময় আপনার হয়ে অনুরোধ করা (refresh_token, offline_access)
- সেভ করুন বিকল্পে ক্লিক করুন। কোনও সমস্যা থাকলে, আপনাকে
salesforce.crtফাইলটি আবার তৈরি করে আপলোড করতে হতে পারে। - এর ফলে যে অ্যাপ পৃষ্ঠাটি খুলবে, সেখানে ম্যানেজ করুন বিকল্পে ক্লিক করুন।
- আপনি এইমাত্র যে অ্যাপ তৈরি করেছেন সেটির জন্য অ্যাপ ম্যানেজার পৃষ্ঠায়, নীতি এডিট করুন বিকল্পে ক্লিক করুন।
- OAuth নীতি বিকল্পের মধ্যে, অনুমোদিত ব্যবহারকারী ড্রপ-ডাউনে ক্লিক করুন, তারপর অ্যাডমিন অনুমোদিত ব্যবহারকারীরা আগে থেকেই অনুমোদিত বিকল্পে ক্লিক করুন।
- সেভ করুন বিকল্পে ক্লিক করুন।
- অ্যাপ পৃষ্ঠায় ফিরে গিয়ে, প্রোফাইল বিকল্পের মধ্যে, প্রোফাইল ম্যানেজ করুন বিকল্পে ক্লিক করুন।
অ্যাপ্লিকেশন প্রোফাইল অ্যাসাইনমেন্ট পৃষ্ঠায়, সেইসব ব্যবহারকারীর প্রোফাইলের জন্য চেকবক্স বেছে নিন যারা এই অ্যাপ্লিকেশন ব্যবহার করতে পারবেন।
এক্সটেনশন কনফিগার করার সময় আপনি যে ব্যবহারকারীর ইউজারনেম ব্যবহার করবেন, তার প্রোফাইলটিই বেছে নিয়েছেন কিনা তা নিশ্চিত করুন। এছাড়াও, নিশ্চিত করুন যে কমপক্ষে সিস্টেম অ্যাডমিনিস্ট্রেটর ব্যবহারকারীদের এই অ্যাপ্লিকেশন অ্যাক্সেস করার সুবিধা আছে।
আপনি Salesforce-এ ব্যবহারকারীর প্রোফাইল সেটিং দেখতে পারবেন। সেট-আপ বিভাগে, ব্যবহারকারী > ব্যবহারকারী বিকল্পে গিয়ে এক্সটেনশনটি যে ব্যবহারকারীর হয়ে কাজ করবে তাকে খুঁজে নিন, তারপর প্রোফাইল কলামে তার প্রোফাইল খুঁজে নিন।
সেভ করুন বিকল্পে ক্লিক করুন।
Salesforce সম্পর্কে
Salesforce হল একটি গ্রাহক সম্পর্ক ব্যবস্থাপনা (CRM) প্ল্যাটফর্ম। গ্রাহক সম্পর্ক ম্যানেজমেন্ট, গ্রাহকদের তথ্য ও ইন্টার্যাকশন আরও ভালোভাবে ম্যানেজ করার মাধ্যমে, কোম্পানিকে গ্রাহকদের প্রয়োজন বুঝতে ও সমস্যা সমাধান করতে সাহায্য করে — সবকিছুই একটি প্ল্যাটফর্মে করা হয় যা যেকোনও ডেস্কটপ বা ডিভাইস থেকে সবসময় অ্যাক্সেস করা যায়।
ক্রিয়াসমূহ
ইনসার্ট করুন
sObject ধরন হিসেবে রেকর্ড যোগ করুন।
সিন্ট্যাক্স
<Action>insert</Action>
<Input><![CDATA[{
"sobject": records-sObject-type,
"records":[ records-to-insert ],
"allOrNone": true | false
}]]></Input>
উদাহরণ
<Action>insert</Action>
<Input><![CDATA[{
"sobject": "Account",
"records":[
{ "Name": "MyAccountName" }
],
"allOrNone": true
}]]></Input>
অনুরোধের প্যারামিটার
| প্যারামিটার | বিবরণ | ধরন | ডিফল্ট | প্রয়োজনীয় |
|---|---|---|---|---|
| sobject | যোগ করার জন্য রেকর্ডের sObject ধরন। | স্ট্রিং | কোনওটিই নয়। | হ্যাঁ। |
| রেকর্ড | JSON-এ sObject রেকর্ডের অ্যারে। সর্বোচ্চ: ১০০০। | অ্যারে | কোনওটিই নয়। | হ্যাঁ। |
| allOrNone | আপডেটের কোনও অংশ আপডেট করা না গেলে, পুরো আপডেটটি বাতিল করতে true 'কী' প্রেস করুন। |
বুলিয়ান | মিথ্যা | না। |
রেসপন্স
ইনসার্ট অপারেশন থেকে পাওয়া ফলাফল সহ results অ্যারে।
{
results: [
{ id: '0011U00000LQ76KQAT', success: true, errors: [] },
{ id: '0011U00000LQ76LQAT', success: true, errors: [] }
]
}
| প্রপার্টি | বিবরণ | ধরন | ডিফল্ট | প্রয়োজনীয় |
|---|---|---|---|---|
| results[*].id | নতুন রেকর্ডের জন্য জেনারেট করা sObject আইডি। | স্ট্রিং | কোনওটিই নয়। | হ্যাঁ। |
| results[*].success | true যদি সেই রেকর্ড যোগ করা যায়। |
বুলিয়ান | কোনওটিই নয়। | হ্যাঁ। |
| results[*].errors | এক্সিকিউশনের সময় ধরা পড়া সমস্যার অ্যারে, যদি থাকে। | অ্যারে | কোনওটিই নয়। | হ্যাঁ। |
আপডেট করুন
Salesforce রেকর্ড আপডেট করুন।
সিন্ট্যাক্স
<Action>update</Action>
<Input><![CDATA[{
"sobject": records-sObject-type,
"records": [ records-to-update ],
"allOrNone": true | false
}]]></Input>
উদাহরণ
<Action>update</Action>
<Input><![CDATA[{
"sobject": "Account",
"records":[
{
"id":"0011U00000LQ76KQAT",
"Name": "MyNewAccountName"
}
],
"allOrNone": true
}]]></Input>
অনুরোধের প্যারামিটার
| প্যারামিটার | বিবরণ | ধরন | ডিফল্ট | প্রয়োজনীয় |
|---|---|---|---|---|
| sobject | আপডেট করার জন্য রেকর্ডের sObject type। | স্ট্রিং | কোনওটিই নয়। | হ্যাঁ। |
| রেকর্ড | JSON-এ sObject রেকর্ডের অ্যারে। আপডেট করার জন্য প্রতিটি রেকর্ডে অবশ্যই রেকর্ডের আইডি ভ্যালু থাকতে হবে। সর্বোচ্চ: ১০০০। | অ্যারে | কোনওটিই নয়। | হ্যাঁ। |
| allOrNone | আপডেটের কোনও অংশ আপডেট করা না গেলে, পুরো আপডেটটি বাতিল করতে true 'কী' প্রেস করুন। |
বুলিয়ান | মিথ্যা | না। |
রেসপন্স
আপডেট থেকে পাওয়া ফলাফল সহ results অ্যারে।
{
results: [
{ id: '0011U00000LQ76KQAT', success: true, errors: [] },
{ id: '0011U00000LQ76LQAT', success: true, errors: [] }
]
}
| প্যারামিটার | বিবরণ | ধরন | ডিফল্ট | প্রয়োজনীয় |
|---|---|---|---|---|
| results[*].id | আপডেট করা রেকর্ডের জন্য জেনারেট করা sObject আইডি। | স্ট্রিং | কোনওটিই নয়। | হ্যাঁ। |
| results[*].success | true যদি সেই রেকর্ড যোগ করা যায়। |
বুলিয়ান | কোনওটিই নয়। | হ্যাঁ। |
| results[*].errors | এক্সিকিউশনের সময় ধরা পড়া সমস্যার অ্যারে, যদি থাকে। | অ্যারে | কোনওটিই নয়। | হ্যাঁ। |
রিট্রিভ
তাদের আইডি দিয়ে sObjects হিসেবে রেকর্ড ফিরিয়ে আনুন। sObjectType-এর সব ফিল্ড রিটার্ন করে।
সিন্ট্যাক্স
<Action>retrieve</Action>
<Input><![CDATA[{
"sobject": records-sObject-type,
"ids":[ IDs-of-records-to-retrieve ]
}]]></Input>
উদাহরণ
<Action>retrieve</Action>
<Input><![CDATA[{
"sobject": "Account",
"ids":["0011U00000LQ76KQAT"]
}]]></Input>
অনুরোধের প্যারামিটার
| প্যারামিটার | বিবরণ | ধরন | ডিফল্ট | প্রয়োজনীয় |
|---|---|---|---|---|
| sobject | যেসব রেকর্ড ফিরিয়ে আনা হবে সেগুলির sObject ধরন। | স্ট্রিং | কোনওটিই নয়। | হ্যাঁ। |
| ids | ফেরত পাওয়ার জন্য sObject আইডি রেকর্ডের অ্যারে। সর্বোচ্চ: ১০০০। | অ্যারে | কোনওটিই নয়। | হ্যাঁ। |
| allOrNone | true অনুরোধের কোনও অংশ সম্পূর্ণ না হলে পুরো অপারেশনটি ব্যর্থ করে দেয়। |
বুলিয়ান | মিথ্যা | না। |
রেসপন্স
JSON হিসেবে দেখানো sObject-এর records অ্যারে। মনে রাখবেন, JSON-এ অবজেক্টের সব প্রপার্টি অন্তর্ভুক্ত থাকে, এমনকি প্রপার্টির ভ্যালু শূন্য হলেও।
{
records: [
{ sobject-json },
{ sobject-json }
]
}
querySOQL
Salesforce Object Query Language (SOQL) ব্যবহার করে Salesforce.com কোয়েরি করুন।
সিন্ট্যাক্স
<Action>querySOQL</Action>
<Input><![CDATA[{
"soql": soql-query-statement
}]]></Input>
উদাহরণ
<Action>querySOQL</Action>
<Input><![CDATA[{
"soql": "SELECT Id, Name FROM Account"
}]]></Input>
অনুরোধের প্যারামিটার
| প্যারামিটার | বিবরণ | ধরন | ডিফল্ট | প্রয়োজনীয় |
|---|---|---|---|---|
| soql | কোয়েরি করার জন্য SOQL স্টেটমেন্ট। | স্ট্রিং | কোনওটিই নয়। | হ্যাঁ। |
রেসপন্স
কোয়েরির ফলাফল।
{
totalSize: 2,
records: [
{
attributes: { attributes-of-record },
Id: '0011U00000LQ76KQAT',
Name: 'AccountName1'
},
{
attributes: { attributes-of-record },
Id: '0011U00000LQ76LQAT',
Name: 'AccountName2'
}
],
done: true
}
| প্যারামিটার | বিবরণ | ধরন | ডিফল্ট | প্রয়োজনীয় |
|---|---|---|---|---|
| totalSize | কোয়েরির মাধ্যমে রিটার্ন করা রেকর্ডের সংখ্যা। | পূর্ণসংখ্যা | কোনওটিই নয়। | হ্যাঁ। |
| রেকর্ড | JSON-এ sObject হিসেবে রিটার্ন করা রেকর্ডগুলির অ্যারে। সর্বোচ্চ: ১০০০। | অ্যারে | কোনওটিই নয়। | হ্যাঁ। |
| সম্পন্ন | true কোয়েরি অপারেশন সম্পূর্ণ হলে। |
বুলিয়ান | কোনওটিই নয়। | হ্যাঁ। |
তালিকা
Salesforce.com রেকর্ড তালিকাভুক্ত করো। নির্দিষ্ট sObjectType-এর সব ফিল্ড রিটার্ন করে।
সিন্ট্যাক্স
<Action>list</Action>
<Input><![CDATA[{
"sobject": records-sObject-type,
"limit": max-number-of-records,
"offset": record-index-at-which-to-begin-response-set
}]]></Input>
উদাহরণ
<Action>list</Action>
<Input><![CDATA[{
"sobject": "Account",
"limit": 1000,
"offset": 0
}]]></Input>
অনুরোধের প্যারামিটার
| প্যারামিটার | বিবরণ | ধরন | ডিফল্ট | প্রয়োজনীয় |
|---|---|---|---|---|
| sobject | তালিকাভুক্ত করার জন্য রেকর্ডের sObject ধরন। | স্ট্রিং | কোনওটিই নয়। | হ্যাঁ। |
| সীমা | ফেরানোর জন্য সর্বাধিক সংখ্যক রেকর্ড। | পূর্ণসংখ্যা | ১০০০ | না। |
| অফসেট | তালিকাভুক্ত করার জন্য রেকর্ডের অফসেট। | পূর্ণসংখ্যা | 0 |
না। |
রেসপন্স
JSON হিসেবে তালিকাভুক্ত sObject সহ records অ্যারে।
{
records: [
{ sobject-json },
{ sobject-json }
]
}
সাফ
নির্দিষ্ট আইডি সহ রেকর্ড মুছে দিন।
সিন্ট্যাক্স
<Action>del</Action>
<Input><![CDATA[{
"sobject": records-sObject-type,
"ids":[ IDs-of-records-to-retrieve ]
}]]></Input>
উদাহরণ
<Action>del</Action>
<Input><![CDATA[{
"sobject": "Account",
"ids":["0011U00000LQ76KQAT"]
}]]></Input>
অনুরোধের প্যারামিটার
| প্যারামিটার | বিবরণ | ধরন | ডিফল্ট | প্রয়োজনীয় |
|---|---|---|---|---|
| sobject | মুছে ফেলার জন্য রেকর্ডের sObject type। | স্ট্রিং | কোনওটিই নয়। | হ্যাঁ। |
| ids | মুছে ফেলার জন্য রেকর্ডের sObject আইডির অ্যারে। সর্বোচ্চ: ১০০০। | অ্যারে | কোনওটিই নয়। | হ্যাঁ। |
রেসপন্স
অপারেশনের ফলাফল সহ একটি results অ্যারে।
{
results:[
{ id: '0011U00000LQ76KQAT', success: true, errors: [] },
{ id: '0011U00000LQ76LQAT', success: true, errors: [] }
]
}
| প্রপার্টি | বিবরণ | ধরন | ডিফল্ট | প্রয়োজনীয় |
|---|---|---|---|---|
| results[*].id | উল্লিখিত রেকর্ডের sObject আইডি। | স্ট্রিং | কোনওটিই নয়। | হ্যাঁ। |
| results[*].success | true যদি রেকর্ডের জন্য অপারেশন সফল হয়। |
বুলিয়ান | কোনওটিই নয়। | হ্যাঁ। |
| results[*].errors | এক্সিকিউশনের সময় ধরা পড়া সমস্যার অ্যারে, যদি থাকে। | অ্যারে | কোনওটিই নয়। | হ্যাঁ। |
getAccessToken
Salesforce.com API অ্যাক্সেস টোকেন পান। REST API কোয়েরি করার জন্য ব্যবহার করা যেতে পারে।
সিন্ট্যাক্স
<Action>getAccessToken</Action>
<Input><![CDATA[{}]]></Input>
অনুরোধের প্যারামিটার
কোনওটিই নয়।
রেসপন্স
JSON-এ অ্যাক্সেস টোকেন।
{
"accessToken":"00D1U0000014m3hqswvoM22I5GTw9EJrztlZ8eSSka88Q",
"scope":"api",
"instanceUrl": "https://na85.salesforce.com",
"id": "https://login.salesforce.com/id/00D1U0004564mutUAA/0051U43214qecVQAQ",
"tokenType": "Bearer"
}
| প্রপার্টি | বিবরণ | ধরন | ডিফল্ট | প্রয়োজনীয় |
|---|---|---|---|---|
| accessToken | অ্যাক্সেস টোকেন। | স্ট্রিং | কোনওটিই নয়। | হ্যাঁ। |
| স্কোপ | টোকেন যে স্কোপের মধ্যে অ্যাক্সেস প্রদান করে। | স্ট্রিং | কোনওটিই নয়। | হ্যাঁ। |
| instanceUrl | Salesforce সংস্থা যে ইনস্ট্যান্স ব্যবহার করে তার URL. | স্ট্রিং | কোনওটিই নয়। | হ্যাঁ। |
| id | কানেক্ট করা অ্যাপের আইডি। | স্ট্রিং | কোনওটিই নয়। | হ্যাঁ। |
| tokenType | অ্যাক্সেস টোকেন টাইপ করুন। | স্ট্রিং | বেয়ারার | হ্যাঁ। |
কনফিগারেশন রেফারেন্স
API প্রক্সিতে ব্যবহারের জন্য এই এক্সটেনশন কনফিগার ও ডেপ্লয় করার সময় নিম্নলিখিত বিষয়গুলি ব্যবহার করুন।
এক্সটেনশনের সাধারণ প্রপার্টি
নিম্নলিখিত বৈশিষ্ট্যগুলি প্রতিটি এক্সটেনশনের জন্য উপস্থিত রয়েছে।
| সম্পত্তি | বর্ণনা | ডিফল্ট | প্রয়োজন |
|---|---|---|---|
name | আপনি এক্সটেনশনের এই কনফিগারেশনের নাম দিন। | কোনোটিই নয় | হ্যাঁ |
packageName | Apigee Edge দ্বারা প্রদত্ত এক্সটেনশন প্যাকেজের নাম। | কোনোটিই নয় | হ্যাঁ |
version | যে এক্সটেনশন প্যাকেজ থেকে আপনি একটি এক্সটেনশন কনফিগার করছেন তার সংস্করণ নম্বর। | কোনোটিই নয় | হ্যাঁ |
configuration | আপনি যে এক্সটেনশনটি যোগ করছেন তার জন্য নির্দিষ্ট কনফিগারেশন মান। এই এক্সটেনশন প্যাকেজের বৈশিষ্ট্য দেখুন | কোনোটিই নয় | হ্যাঁ |
এই এক্সটেনশন প্যাকেজের প্রপার্টি
এই এক্সটেনশনের জন্য নির্দিষ্ট নিম্নলিখিত কনফিগারেশন প্রপার্টির ভ্যালু উল্লেখ করুন।
| প্রপার্টি | বিবরণ | ডিফল্ট | প্রয়োজনীয় |
|---|---|---|---|
| অনুমোদন সার্ভার URL | Salesforce থেকে অনুমোদন পাওয়ার সময় ব্যবহার করার URL। সাধারণত, এটি https://login.salesforce.com |
কোনওটিই নয়। | হ্যাঁ। |
| কানেক্ট করা অ্যাপের কনজিউমার কী | আপনার তৈরি করা কানেক্ট করা অ্যাপের জন্য Salesforce-এর দেওয়া কনজিউমার কী। আপনার কনজিউমার কী রিট্রিভ করার জন্য পূর্বশর্ত-এর অধীনে নির্দেশাবলী দেখুন। | কোনওটিই নয়। | হ্যাঁ। |
| ক্রেডেনশিয়াল | Apigee Edge কনসোলে এটি লিখলে, এটি হল salesforce.key ফাইলের কন্টেন্ট যা আপনি ধাপে ধাপে জেনারেট করেছেন। ম্যানেজমেন্ট API ব্যবহার করে পাঠানো হলে, এটি salesforce.key ফাইল থেকে জেনারেট করা একটি base64-এনকোডেড ভ্যালু। | কোনওটিই নয়। | হ্যাঁ। |
| Salesforce ব্যবহারকারীর ইউজারনেম | আপনার তৈরি করা কানেক্ট করা অ্যাপের সাথে যুক্ত ইউজারনেম। Salesforce এক্সটেনশন, Salesforce থেকে অনুমোদন পাওয়ার জন্য এটি ব্যবহার করবে। | কোনওটিই নয়। | হ্যাঁ। |