Salesforce: রেকর্ড তৈরি বা আপডেট করুন
একটি জার্নি স্টেপ থেকে একটি Salesforce রেকর্ড আপসার্ট করতে Salesforce: create or update record ব্যবহার করুন, যা একটি এক্সটার্নাল আইডি ফিল্ডের উপর ভিত্তি করে ম্যাচ করে: যদি ভ্যালু আগে থেকেই থাকে তবে এটি রেকর্ডটি আপডেট করে এবং যদি না থাকে তবে এটি তৈরি করে। Salesforce-এর কোনো স্ট্যাটিক API টোকেন নেই, তাই এই পয়েন্টটি একটি কানেক্টেড অ্যাপের মাধ্যমে প্রমাণীকরণ করে যা পুরো অ্যাকাউন্টের জন্য একবার রেজিস্টার করা হয়। পয়েন্টটিতে কোনো টোকেন ফিল্ড নেই।
সাধারণ ব্যবহার:
- Salesforce সিঙ্কে রাখুন: ট্র্যাভেলার জার্নিতে চলার সাথে সাথে একটি Contact বা Lead তৈরি বা আপডেট করুন, যাতে সেলস টিম বর্তমান ডেটা দেখতে পায়।
- জার্নির কার্যকলাপ CRM-এ সিঙ্ক করুন: যখন একজন ট্র্যাভেলার একটি মাইলস্টোনে পৌঁছায় তখন একটি ফিল্ড সেট করুন, যাতে সেলস টিম এটি ফিল্টার বা রিপোর্ট করতে পারে।
- ডুপ্লিকেট রেকর্ড এড়িয়ে চলুন: এক্সটার্নাল আইডি দ্বারা ম্যাচ করার মানে হল যে একজন ট্র্যাভেলার যে এই পয়েন্টের মধ্য দিয়ে আবার যায় সে একটি নতুন রেকর্ড তৈরি করার পরিবর্তে একই রেকর্ড আপডেট করে।
শুরু করার আগে
Anchor link toআপনার Salesforce org-এ একটি কানেক্টেড অ্যাপ তৈরি করুন এবং এটিকে Settings > 3rd-party integrations > Salesforce-এর অধীনে কানেক্ট করুন:
- Salesforce-এ, OAuth সক্রিয় এবং Manage user data via APIs (api) স্কোপ সহ একটি External Client App (বা একটি ক্লাসিক কানেক্টেড অ্যাপ) তৈরি করুন।
- এতে Client Credentials Flow সক্রিয় করুন এবং রান-অ্যাজ ইউজার নির্বাচন করুন। পয়েন্টটি সেই ইউজারের হিসেবে লেখে, তাই এর প্রোফাইল নির্ধারণ করে যে এটি কোন অবজেক্ট এবং ফিল্ড স্পর্শ করতে পারবে।
- Pushwoosh-এ, My Domain host-এ, আপনার org-এর হোস্ট
https://ছাড়া লিখুন, উদাহরণস্বরূপacme.my.salesforce.com। - Consumer Key এবং Consumer Secret-এ, অ্যাপের ক্রেডেনশিয়াল পেস্ট করুন। সিক্রেটটি শুধুমাত্র লেখার জন্য সংরক্ষণ করা হয়: Pushwoosh এটি আর কখনও দেখায় না, তাই এটি প্রতিস্থাপন করতে একটি নতুন পেস্ট করুন।
- Connect Salesforce-এ ক্লিক করুন।

আপনি Salesforce কানেক্ট করার পরে, ইন্টিগ্রেশন ইনস্টল করুন যাতে পয়েন্টটি জার্নি বিল্ডারে উপস্থিত হয়।
Salesforce-এর দিকে আরও দুটি জিনিস ঠিকঠাক থাকতে হবে:
- আপনি যে ফিল্ডটি ম্যাচ করছেন সেটিকে সেই অবজেক্টে External ID হিসেবে চিহ্নিত করতে হবে। একটি সাধারণ টেক্সট ফিল্ড, এমনকি
Emailহলেও যথেষ্ট নয় — Salesforce অনুরোধটিNOT_FOUNDদিয়ে প্রত্যাখ্যান করে যখন ফিল্ডটি এক্সটার্নাল আইডি না হয়। - কানেক্টেড অ্যাপের Run As ইউজারের সেই ফিল্ডে ফিল্ড-লেভেল অ্যাক্সেস প্রয়োজন। Setup বা API-এর মাধ্যমে তৈরি করা একটি ফিল্ড নিজে থেকে কিছুই দেয় না, এবং অনুমতি ছাড়া Salesforce একই
NOT_FOUND: Field name provided ... does not match an External IDদিয়ে উত্তর দেয় — ফিল্ডটি সেই ইউজারের কাছে অদৃশ্য, তাই API-এর দিক থেকে এর কোনো অস্তিত্ব নেই। এটিকে Run As ইউজারের জন্য নির্ধারিত একটি পারমিশন সেটে যোগ করুন।
পয়েন্টটি কনফিগার করুন
Anchor link to- বাম প্যানেলের Integrations বিভাগ থেকে Salesforce: create or update record ক্যানভাসে টেনে আনুন।
- পয়েন্টটিতে ডাবল-ক্লিক করুন এবং একটি Step Name লিখুন।
- My Domain host-এ, একই হোস্ট লিখুন যেখানে কানেক্টেড অ্যাপটি রয়েছে।

- Object-এ, অবজেক্টের API নাম লিখুন —
Contact,Lead, বা একটি কাস্টম অবজেক্ট যা__cদিয়ে শেষ হয়।

- External id field-এ, External ID হিসেবে চিহ্নিত ফিল্ডের API নাম লিখুন।

- External id value-এ, ম্যাচ করার জন্য ভ্যালু লিখুন, সাধারণত একটি ম্যাক্রো যেমন
{{device:hwid}}।

- Fields-এ, সেট করার জন্য প্রতিটি Salesforce ফিল্ডের জন্য একটি করে সারি যোগ করুন। ফিল্ডের API নাম এবং ভ্যালু লিখুন। নামগুলি খালি থাকা যাবে না এবং ইউনিক হতে হবে। অবজেক্টের প্রয়োজনীয় ফিল্ডগুলি এর মধ্যে থাকতে হবে, নতুবা Salesforce নতুন রেকর্ড তৈরি করতে অস্বীকার করবে। একটি ভ্যালু নির্দিষ্ট টেক্সট বা একটি ট্র্যাভেলার ম্যাক্রো হতে পারে যেমন
{{device:hwid}}, Webhook বডির মতো একই ম্যাক্রো। অথবা এই জার্নির আগের কোনো স্টেপে তৈরি হওয়া একটি অ্যাট্রিবিউট, যেমন একটি LLM রেসপন্স বা একটি ম্যাপ করা Webhook ভ্যালু বেছে নিতে Insert Dynamic Value-তে ক্লিক করুন।

- Save-এ ক্লিক করুন।
রেসপন্স
Anchor link toট্র্যাভেলার ক্যানভাসে আপনার পরবর্তী কানেক্ট করা যেকোনো স্টেপে এগিয়ে যায়।
স্টেপটি চলার পরে অ্যাট্রিবিউট
Anchor link to| অ্যাট্রিবিউট | এতে কী থাকে |
|---|---|
salesforce_record_id | রেকর্ডের আইডি |
পরবর্তী স্টেপগুলিতে এটি কীভাবে ব্যবহার করবেন
Anchor link toট্র্যাভেলার এই অ্যাট্রিবিউট নির্বিশেষে ইতিমধ্যে পরবর্তী স্টেপে চলে গেছে। যদি আপনার পরে এই নির্দিষ্ট রেকর্ডটি রেফারেন্স করার প্রয়োজন হয়, যেমন Salesforce-এর নিজস্ব API-এর মাধ্যমে, তাহলে এটিকে Update user profile ব্যবহার করে একটি ট্যাগ-এ সেভ করুন।
ব্যর্থতা এবং অপ্রত্যাশিত রেসপন্স
Anchor link toপয়েন্টের ড্রয়ারে Calls log খুলুন এবং রেসপন্স পরীক্ষা করুন:
- 401 — কানেক্টেড অ্যাপের ক্রেডেনশিয়াল ভুল, অথবা ক্লায়েন্ট ক্রেডেনশিয়াল ফ্লো এতে সক্রিয় করা নেই।
- বডিতে NOT_FOUND — অবজেক্টের নাম, বা এক্সটার্নাল আইডি ফিল্ড, সেই org-এর কোনো কিছুর সাথে মেলে না। ফিল্ডটি সত্যিই External ID হিসেবে চিহ্নিত কিনা তা পরীক্ষা করুন।
- বডিতে REQUIRED_FIELD_MISSING — একটি নতুন রেকর্ড তৈরি করার জন্য এমন একটি ফিল্ড প্রয়োজন যা পয়েন্টটি পাঠায় না। এটিকে Fields-এ যোগ করুন।
- বডিতে INVALID_FIELD — Fields-এর একটি নাম সেই অবজেক্টের API নাম নয়। একটি কাস্টম ফিল্ডের API নাম
__cদিয়ে শেষ হয়।
একটি ব্যর্থ অনুরোধ ট্র্যাভেলারকে জার্নি থেকে বাদ দেয়। দেখুন Errors and failed requests।
উদাহরণ পরিস্থিতি: একটি ইন-অ্যাপ পরামর্শ অনুরোধ সেলস-এর কাছে রাউটিং করা
Anchor link toএকটি ওয়েলনেস অ্যাপ ইউজারদের ইন-অ্যাপে Talk to an advisor-এ ট্যাপ করতে দেয়। টিম চায় যে সেই অনুরোধটি একটি Salesforce Contact হয়ে উঠুক যা একজন প্রতিনিধি ফলো-আপ করতে পারে।
- একটি Trigger-based entry এলিমেন্ট যোগ করুন এবং এটিকে একটি
AdvisorCallRequestedইভেন্টে ফায়ার করার জন্য সেট করুন। - এর ঠিক পরেই Salesforce: create or update record যোগ করুন। Object
Contact-এ, External id fieldPushwoosh_HWID__c-তে, এবং External id value{{device:hwid}}-তে সেট করুন। Fields-এ,Email{{tag:Email}}-তে সেট করুন। - Save-এ ক্লিক করুন।
এটি একবার চললে, প্রতিটি ইন-অ্যাপ পরামর্শ অনুরোধ Salesforce-এ একটি Contact হিসেবে পৌঁছায়, ডিভাইস দ্বারা ম্যাচ করা হয় যাতে একটি পুনরাবৃত্ত ট্যাপ একই Contact আপডেট করে এবং একটি ডুপ্লিকেট তৈরি না করে।