1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 | 'use strict';
|
8 |
|
9 | var QueryRequest = require('./query_request').QueryRequest;
|
10 | var util = require('util');
|
11 |
|
12 | exports.VoiceRequest = module.exports.VoiceRequest = VoiceRequest;
|
13 |
|
14 | var CRLF = '\r\n';
|
15 |
|
16 | util.inherits(VoiceRequest, QueryRequest);
|
17 |
|
18 | function VoiceRequest (application, options) {
|
19 | var self = this;
|
20 | self.boundary = self._generateBoundary();
|
21 |
|
22 | VoiceRequest.super_.apply(this, [application, options]);
|
23 |
|
24 | self._sendMetaData();
|
25 | }
|
26 |
|
27 | VoiceRequest.prototype._generateBoundary = function() {
|
28 | return (new Date()).getTime().toString();
|
29 | };
|
30 |
|
31 | VoiceRequest.prototype._headers = function() {
|
32 | var self = this;
|
33 |
|
34 | var headers = VoiceRequest.super_.prototype._headers.apply(this, arguments);
|
35 |
|
36 | headers['Content-Type'] = 'multipart/form-data; boundary=' + self.boundary;
|
37 | headers['Transfer-Encoding'] = 'chunked';
|
38 |
|
39 | return headers;
|
40 | };
|
41 |
|
42 | VoiceRequest.prototype._sendMetaData = function() {
|
43 | var self = this;
|
44 |
|
45 | var data = '--' + self.boundary + CRLF;
|
46 | data += 'Content-Disposition: form-data; name="request"' + CRLF;
|
47 | data += "Content-Type: application/json" + CRLF + CRLF;
|
48 |
|
49 | data += JSON.stringify(self._jsonRequestParameters());
|
50 |
|
51 | data += CRLF + '--' + self.boundary + CRLF;
|
52 | data += 'Content-Disposition: form-data; name="voiceData"' + CRLF;
|
53 | data += 'Content-Type: audio/wav' + CRLF + CRLF;
|
54 |
|
55 | self.write(data);
|
56 | };
|
57 |
|
58 | VoiceRequest.prototype.end = function() {
|
59 | var self = this;
|
60 |
|
61 | var lastDataChunk = CRLF + '--' + self.boundary + '--' + CRLF;
|
62 |
|
63 | self.write(lastDataChunk);
|
64 |
|
65 | VoiceRequest.super_.prototype.end.apply(this, arguments);
|
66 | };
|