Receiver Contract
Adapt the receiver contract to send messages back
The receiver contract now has two tasks:
- Receive a message from the sender: Same as in the last example
 - Send a message back to the sender: Now our receiver contract needs to be able to send a message back to the sender.
 
Therefore, we need to change the receiver contract to be able to send a message back. We will need to instantiate a TeleporterMessenger and call the sendCrossChainMessage() function.
// (c) 2023, Ava Labs, Inc. All rights reserved.
// See the file LICENSE for licensing terms.
// SPDX-License-Identifier: Ecosystem
pragma solidity ^0.8.18;
import "@teleporter/ITeleporterMessenger.sol";
import "@teleporter/ITeleporterReceiver.sol";
contract ReceiverOnDispatch is ITeleporterReceiver {
    ITeleporterMessenger public immutable messenger = ITeleporterMessenger(0x253b2784c75e510dD0fF1da844684a1aC0aa5fcf);
    function receiveTeleporterMessage(bytes32 sourceBlockchainID, address originSenderAddress, bytes calldata message)
        external
    {
        // Only the Interchain Messaging receiver can deliver a message.
        require(msg.sender == address(messenger), "ReceiverOnDispatch: unauthorized TeleporterMessenger");
        // Send Roundtrip message back to sender
        string memory response = string.concat(abi.decode(message, (string)), " World!");
        messenger.sendCrossChainMessage(
            TeleporterMessageInput({
                // Blockchain ID of C-Chain
                destinationBlockchainID: sourceBlockchainID,
                destinationAddress: originSenderAddress,
                feeInfo: TeleporterFeeInfo({feeTokenAddress: address(0), amount: 0}),
                requiredGasLimit: 100000,
                allowedRelayerAddresses: new address[](0),
                message: abi.encode(response)
            })
        );
    }
}Is this guide helpful?



