SalesForce dynamic triggers (callbacks) - salesforce

We are creating a product that allows customers to sign up and somehow "hook up" their SalesForce CRM implementation to it in which we'd like to have it automatically create triggers/callbacks to an endpoint URL we own (and transferring info about the action+details and which customer of ours is triggering it).
For example: when someone enters a lead, a sale, etc. we want our service (custom code elsewhere on HTTP REST endpoint) to be notified.
What is the best approach for this? I'm a newbie when it comes to SalesForce, just looking for someone to push me the right direction. I hear "SalesForce Apps" and then there is an API, etc. I also hear there is an API limit, so is polling a better idea? Anything else I am missing?

If you distribute your application or "connector" through the Salesforce App Exchange then you can have an Apex trigger on some SObjects which does an HTTP / REST callout to your service. Otherwise you could do something similar to how the Salesforce Webhook Creator dynamically generates the necessary Apex and adds it to a Salesforce org (via the Salesforce Tooling REST API).

Related

React Form send email

I am building a form in react and I wanted to send it to my email when the user clicked the submit button.
I was looking at Microsoft Graph API for sending the email (https://learn.microsoft.com/en-us/graph/api/user-sendmail?view=graph-rest-1.0&tabs=javascript), but checking it, seems that it needs a temporary token, so I can't use it as I would need to be changing the token every hour or so.
So, I'm basicaly trying to find an API like the Gmail but for office 365 accounts (https://developers.google.com/gmail/api/guides/sending), as we can create a gcp project and use the keys that it generates for us, instead of using a token like the MS Graph API
Generaly I would use a route in my API, but this site is static, so I do not have any API (neither serverlets, cloud functions or other stuff like it).
Is there any away to send an email through a Microsoft API from my web client in react, using only a token specific to the domain? Or is there a better away to acomplish this same result?
I highly recommend using https://formsubmit.co/. It's free and I personally use it in many projects. Works flawlessly with many features like email templating, captcha, reply_to, etc.
No backend knowledge is required. Can set it up in like 1 minute.
One option would be to authenticate on behalf of the user.
You can also have a small proxy API, dedicated for the purpose of allowing the users to send an email.

How send notification into ms teams user from custom tab

I'm designing a custom team tab using React that calls third party API, I need after executing the API successfully, user gets notified . What is the best way to achieve this? I used Bot in my project, but not sure how can I call it from my custom tab class. I'm aware of the existence of proactive messaging, is it the only way to do it? If it is, a pointer on how to implement it to a custom tab would be appreciated.
If you're wanting to message the user 1-1 (like in the personal app), then proactive messaging is definitely what you need (inside a Team, there are other options), and considering you have the bot already in place that's perfect. The only thing you might be missing are the details required to send the actual proactive message (the best time to get them is when the bot is first installed by the user). In particular, you need ConversationId and ServiceUrl.
With regards the concept of Proactive Messaging, basically once the bot is installed, and you have the required values, you can -send- the message from any backend code at all. That can include, for example, custom tab's backend api. You need to identify the user, which you can do using the Teams Context (it's not the safest way but it's the easiest), and then look up the values in your own backend store (e.g. database or whatever) to get the ConversationId and ServiceUrl, then just message the user in your backend.

Change RingCentral behavior in Salesforce App

We've recently integrated the RingCentral app with our Salesforce org, and we'd like to change the behavior of how calls are logged. The calls in question are related to phone numbers attached to Opportunities.
From what we can tell, the app only permits you to log a call made with this method as a new task under the associated Account, if an Account exists.
We want calls from the logged as a "Log a Call" record under the Opportunity, not as a Task under the Account.
We'd also like to be able to call from and log against an existing Task in certain cases. For example, there may be a Task to follow up on a stalled opportunity, and an outgoing call can log against that task.
I don't think this functionality is possible natively, and I'm pretty new to the RingCentral API. Is it possible to achieve this functionality through the API and Salesforce somehow? Thanks!
You can customize the behavior of RingCentral in Salesforce by using the Embeddable Voice Widget:
Embeddable Voice Widget
https://github.com/ringcentral/ringcentral-embeddable-voice
There are a series of demos here:
https://github.com/ringcentral-tutorials/ringcentral-web-widget-demos
Specific Salesforce demos include:
salesforce_lightning/tutorial - basic embedding in Salesforce
salesforce_lightning_more/tutorial - shows how to customize the experience
See discussion on getting objectId for object that triggered widget:
https://github.com/ringcentral/ringcentral-embeddable-voice/issues/112

Salesforce Apex Callouts to Marketing Cloud

I need to make an Apex Callout to Marketing Cloud when a Lead is created in Salesforce that matches certain criteria. I would like to use this MC Rest API - https://www.exacttargetapis.com/messaging/v1/messageDefinitionSends/key:Autoemail/send. The issue then is that I first need to authenticate with MC to get an Access Token to pass when making the above API call. Does anyone have a good way to persist the Access Token in a Salesforce org? I'm thinking of storing it in a Custom Setting and only updating it when an Apex callout goes to use it and sees that it's nearly 60 minutes old. Is anyone doing something similar? Thanks!
If you know that access token to external service can be expired and should be updated sometimes automatically, the better approach is which you choose - custom setting (or custom object for storing it).
If this token can be hardcoded one time and it will not be changed for a long period, you can checkout Authentication Settings for External Systems functionality.

Integrating application shopping cart with PayPal through PayPal API

I need to integrate PayPal with my client AngularJS app, where the app visitors can donate specific amounts of money based on various causes, but not sure where to start? My client requested that visitors can select cause, amount to be donated, then get routed to Paypal to enter their details, process payment then finally routed back to the app for (thank you page) which should receive payment confirmation as parameter.
I've skimmed through the PayPal developers API and can see that there are a lot of options / features offered but not sure really where to start and which is the best approach to accomplish my client needs? Shall I use REST API? or will simple button integration do the job? What if I need to add causes selected to Paypal checkout page? Can I do this using the API? Thanks
If you don't have some specific reason to use REST I would recommend just going with the Classic API, specifically Express Checkout. It's much more mature and provides a lot more freedom to integrate with different options and customization.
With Express Checkout you'll be using the following calls.
SetExpressCheckout
GetExpressCheckoutDetails
DoExpressCheckoutPayment
You'll call SEC and that will return a token. Then you'll redirect the user to PayPal with that token appended to the URL. The user signs in and approves the payment, and they're returned to a URL that you supply in the SEC request.
At that URL you can call GECD to obtain all the details about the buyer. This allows you to tae their address and apply any shipping or tax rules you need to so that you can present a final review before the user would approve the payment, which is when you trigger DECP to finalize the transaction.
There are various options with that flow. For example, GECD is optional, and depending on your flow you may or may not need a final review, so you could skip straight to DECP and display nothing but a final receipt page when the user gets back to your site if you want to.
If you happen to be using PHP my class library for PayPal will make all of this very simple for you.

Resources