# Cannot repeat spoken title (e.g. Opening Audiobook \<book title here\>)

**URL:** https://community.openconversational.ai/t/cannot-repeat-spoken-title-e-g-opening-audiobook-book-title-here/6463
**Category:** Skills
**Created:** [May 2, 2019, 6:32pm UTC](https://community.openconversational.ai/t/cannot-repeat-spoken-title-e-g-opening-audiobook-book-title-here/6463 "2019-05-02T18:32:51Z")
**Posts on this page:** 6
**Page:** 1

<div class="post-metadata">

### Author: ![rekkitcwts](https://community.openconversational.ai/user_avatar/community.openconversational.ai/rekkitcwts/32/1753_2.png) [@rekkitcwts](https://community.openconversational.ai/u/rekkitcwts)
#### Post date: [May 2, 2019, 6:32pm UTC](https://community.openconversational.ai/t/cannot-repeat-spoken-title-e-g-opening-audiobook-book-title-here/6463/1 "2019-05-02T18:32:51Z")

</div>

Apologies if wrong section, it’s my first post.

I was planning on making an audiobook reader that uses the librivox API, but for some reason, after saying the wake word, Mycroft did not say something like “opening/loading audiobook titled _ **Count of Monte Cristo** _” where “_ **Count of Monte Cristo** _” is part of what the user says (“hey Mycroft, read a book on _ **Count of Monte Cristo** _”).

My copy of the latest attempt can be found here: [https://github.com/rekkitcwts/mycroft-skills/tree/19.02/skill-audiobook](https://github.com/rekkitcwts/mycroft-skills/tree/19.02/skill-audiobook)

---

<div class="post-metadata">

### Author: ![baconator](https://community.openconversational.ai/letter_avatar_proxy/v4/letter/b/d07c76/32.png) [@baconator](https://community.openconversational.ai/u/baconator)
#### Post date: [May 2, 2019, 7:22pm UTC](https://community.openconversational.ai/t/cannot-repeat-spoken-title-e-g-opening-audiobook-book-title-here/6463/2 "2019-05-02T19:22:33Z")

</div>

Might also be useful to see what’s in the logs. Did the skill load? Did the parsing correctly use said skill? Any other errors? (logs are in /var/log/mycroft/ normally)

---

<div class="post-metadata">

### Author: ![rekkitcwts](https://community.openconversational.ai/user_avatar/community.openconversational.ai/rekkitcwts/32/1753_2.png) [@rekkitcwts](https://community.openconversational.ai/u/rekkitcwts)
#### Post date: [May 2, 2019, 10:28pm UTC](https://community.openconversational.ai/t/cannot-repeat-spoken-title-e-g-opening-audiobook-book-title-here/6463/3 "2019-05-02T22:28:41Z")

</div>

There are no errors, but here is a screenshot of mycroft in debug mode:

> **[Screenshot-from-2019-05-03-06-12-12](https://ibb.co/gwTnyg0)**
>
> Image Screenshot-from-2019-05-03-06-12-12 hosted in imgbb.com

---

<div class="post-metadata">

### Author: ![baconator](https://community.openconversational.ai/letter_avatar_proxy/v4/letter/b/d07c76/32.png) [@baconator](https://community.openconversational.ai/u/baconator)
#### Post date: [May 3, 2019, 12:05am UTC](https://community.openconversational.ai/t/cannot-repeat-spoken-title-e-g-opening-audiobook-book-title-here/6463/4 "2019-05-03T00:05:26Z")

</div>

Screenshots are for image issues.

Did the skill load?  
Did the intent get parsed?

---

<div class="post-metadata">

### Author: ![gez-mycroft](https://community.openconversational.ai/user_avatar/community.openconversational.ai/gez-mycroft/32/1937_2.png) [@gez-mycroft](https://community.openconversational.ai/u/gez-mycroft)
#### Post date: [May 3, 2019, 1:00am UTC](https://community.openconversational.ai/t/cannot-repeat-spoken-title-e-g-opening-audiobook-book-title-here/6463/5 "2019-05-03T01:00:52Z")

</div>

Hi rekkitcwts,

Great to see you getting into Skill development!

I’m guessing you were looking at the Speak Skill to get started? That Skill is probably a bit dated. The good news is that we have some easier methods to achieve what you’re trying to do.

I see you made a `Words.rx`. If you require that in your intent handler you can then access the book title as it’s own entity:

```auto
@intent_handler(IntentBuilder("").require("Read").require("Words").require("Audiobook"))
def handle_read_intent(self, message):
    # Get audiobook title from utterance
    book_title = message.data.get('Words')
    self.speak_dialog("loading.audiobook", {'title': book_title})

```

I’m assuming your current code is failing because `repeat.split()` creates a list, and the `.speak()` method requires a string. If you just pass the first element of that list it works:  
`self.speak(repeat.split()[0])`  
however I think the new approach using entities is much easier.

A few other little things you might run into:

- Your regex `Words.rx` should also be in a language sub-directory eg `regex/en-us/Words.rx`
- Alternatively we recently allowed for all of these different language files to live in one folder called locale, so you can replace `regex/en-us/`, `dialog/en-us/` and `vocab/en-us/` with a single `locale/en-us/`
- The MycroftSkill class has a built-in logger so you can run `self.log.debug('some message')` to see what’s happening at runtime.

I’ve also noticed that you are working in a fork of the [mycroft-skills repo](https://github.com/MycroftAI/mycroft-skills). It’s much easier to create a repo just for your Skill. The Mycroft Skills Kit can handle this for you. Checkout the docs for that here:

> **[Mycroft Skills Kit – msk - Mycroft](https://mycroft.ai/documentation/skills/msk/)**
>
> Learn how to use the Mycroft Skills Kit to make the creation, testing and submission of Skills a lot easier.

---

<div class="post-metadata">

### Author: ![rekkitcwts](https://community.openconversational.ai/user_avatar/community.openconversational.ai/rekkitcwts/32/1753_2.png) [@rekkitcwts](https://community.openconversational.ai/u/rekkitcwts)
#### Post date: [May 3, 2019, 3:54am UTC](https://community.openconversational.ai/t/cannot-repeat-spoken-title-e-g-opening-audiobook-book-title-here/6463/6 "2019-05-03T03:54:15Z")

</div>

The skill loaded; hence the debugger did not show any errors. I tried using the same pattern as the Speak skill but not sure what went wrong when trying to parse.
