/// <summary>
        /// Maps Apex device actions to subscription topics.
        /// </summary>
        /// <param name="cancellationToken">Cancellation token.</param>
        /// <returns>Awaitable <see cref="Task" />.</returns>
        private async Task GetConfigAsync(CancellationToken cancellationToken = default)
        {
            var state = await _client.GetRobotStateAsync(cancellationToken)
                        .ConfigureAwait(false);

            _topicMap = GetTopicMap(state);

            foreach (var stateTopic in _topicMap)
            {
                // Publish initial value
                await MqttClient.PublishAsync(
                    new MqttApplicationMessageBuilder()
                    .WithTopic(stateTopic.Key)
                    .WithPayload(stateTopic.Value)
                    .WithAtLeastOnceQoS()
                    .WithRetainFlag()
                    .Build(),
                    cancellationToken).ConfigureAwait(false);
            }
        }