Communicating Across the DOM with Lightning Message Service
If you're switching from Salesforce Classic to Lightning Experience, you can now build Lightning web components that can communicate with existing Visualforce pages or Aura components. You can also use Lightning message service to communicate with softphones via Open CTI.
To access Lightning message service in Visualforce, use the $MessageChannel global variable. A message is a serializable JSON object. Examples of data that you can pass in a message include strings, numbers, objects, and booleans. A message can’t contain functions and symbols. The $MessageChannel global variable is only available in Lightning Experience.
Use Message Channels Created Within Your Org
Here's an example of using a Lightning message channel developed within your org.
<apex:page>
<script>
// Load the MessageChannel token in a variable
var SAMPLEMC = "{!$MessageChannel.SampleMessageChannel__c}";
</script>
</apex:page>
Here, we reference a custom message channel with a formula expression {!$MessageChannel.SampleMessageChannel__c}. This expression creates a token that we assign to the variable SAMPLEMC. This token is unique to your custom message channel and can be used within the Lightning message service API methods. The syntax SampleMessageChannel__c refers to a custom instance of the LightningMessageChannel metadata type. The __c suffix indicates that it’s custom, but note that it isn’t a custom object. See Create a Message Channel to learn more.
If your org has a namespace, don’t include it in your message channel expression. For example, if your org’s namespace is MyNamespace, the message channel expression remains "{!$MessageChannel.SampleMessageChannel__c}".
Use Message Channels Created Outside Your Org
To use message channels from packages created by developers outside of your org, reference them with the syntax {!$MessageChannel.Namespace_name__c}. For example, if SampleMessageChannel wasn’t local to your org and came from a package with the namespace SamplePackageNamespace, the syntax would be {$MessageChannel.SamplePackageNamespace__SampleMessageChannel__c}.