botman / botman/driver-botframework
Question buttons do not work in Bot Framework Emulator
- Dominant language
- PHP
- Stars
- 9
- Forks
- 10
- PR merge metrics
- No merged PRs in 30d
Description
**Setup**
I'm using the [Botframework Emulator](https://aka.ms/botemulator) with Botman Studio and the bot framework driver.
**Issue**
- Start a new conversation that responds with a question.
- Click on button to respond.
- Response isn't parsed with a 500 error.
There appears to be an issue where the HTML tag that is being given to the question buttons as a response is in a different format to what is expected by the driver as a response.
**Conversation**
> You said:
> Start conversation
> Huh - you woke me up. What do you need?
> Tell a joke
> Give me a fancy quote
> You said:
> Tell a joke <botman value="joke" />
**Requests**
> [14:23:16] -> message Start conversation
> [14:23:16] POST 200 directline/conversations//activities
> [14:23:18]<- message application/vnd.microsoft.card.hero
> [14:23:18] POST 200 conversations//activities
> [14:23:20]-> message Tell a joke <botman value="joke" />
> [14:23:21] POST 500 directline/conversations//activities
**Error**
>ErrorException: Undefined offset: 1 in file /Users/hfh83/Documents/Projects/StatusBot/vendor/botman/driver-botframework/src/BotFrameworkDriver.php on line 60
This is because this regex doesn't match the pattern
>`BotFrameworkDriver.php`
>```php
>55 preg_match('/<\/botman>/', $message->getText(), $matches);
>```
The issue is that when the question buttons are generated as part of the `convertQuestion` method on line 118 of `BotFrameworkDriver.php` sets the HTML tag used for this to the shorthand ending in /> instead of a separate closing tag that's expected as shown above.
>`BotFrameworkDriver.php`
>```php
>118 'value' => $button['text'].'',
>```
The test used to check this has the closing tag as part of the test so the test passes, despite this being incorrect
> `BotFrameworkDriverTest.php`
>```php
>537 $text = 'I use botman with Skype'
>```
**Solution**
> Change
>`BotFrameworkDriver.php`
>```php
>55 preg_match('/<\/botman>/', $message->getText(), $matches);
>```
> to
>`BotFrameworkDriver.php`
>```php
>55 preg_match('//', $message->getText(), $matches);
>```
I'll submit a pull request with the changes needed to fix this.
Contributor guide
Assessment
This issue has not been assessed yet.