diff --git a/esphome/components/api/homeassistant_service.h b/esphome/components/api/homeassistant_service.h index b24a6470fe..9c2844fbed 100644 --- a/esphome/components/api/homeassistant_service.h +++ b/esphome/components/api/homeassistant_service.h @@ -122,24 +122,14 @@ template class HomeAssistantServiceCallAction : public Action *get_error_trigger() const { return this->error_trigger_; } #endif // USE_API_HOMEASSISTANT_ACTION_RESPONSES - template - static void populate_service_map(VectorType &dest, SourceType &source, Ts... x) { - dest.init(source.size()); - for (auto &it : source) { - auto &kv = dest.emplace_back(); - kv.set_key(StringRef(it.key)); - kv.value = it.value.value(x...); - } - } - void play(Ts... x) override { HomeassistantActionRequest resp; std::string service_value = this->service_.value(x...); resp.set_service(StringRef(service_value)); resp.is_event = this->flags_.is_event; - populate_service_map(resp.data, this->data_, x...); - populate_service_map(resp.data_template, this->data_template_, x...); - populate_service_map(resp.variables, this->variables_, x...); + this->populate_service_map_(resp.data, this->data_, x...); + this->populate_service_map_(resp.data_template, this->data_template_, x...); + this->populate_service_map_(resp.variables, this->variables_, x...); #ifdef USE_API_HOMEASSISTANT_ACTION_RESPONSES if (this->flags_.wants_status) { @@ -184,6 +174,16 @@ template class HomeAssistantServiceCallAction : public Action + static void populate_service_map_(VectorType &dest, SourceType &source, Ts... x) { + dest.init(source.size()); + for (auto &it : source) { + auto &kv = dest.emplace_back(); + kv.set_key(StringRef(it.key)); + kv.value = it.value.value(x...); + } + } + APIServer *parent_; TemplatableStringValue service_{}; std::vector> data_;