/// <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); } }