diff --git a/res/res_format_attr_silk.c b/res/res_format_attr_silk.c
index 3467f5ae48d68835a4478afcfc601391594d4139..f3f43821c8d031aab33227a72c246efa36b188c1 100644
--- a/res/res_format_attr_silk.c
+++ b/res/res_format_attr_silk.c
@@ -200,12 +200,36 @@ static struct ast_format *silk_set(const struct ast_format *format, const char *
 	return cloned;
 }
 
+static const void *silk_get(const struct ast_format *format, const char *name)
+{
+	struct silk_attr *attr = ast_format_get_attribute_data(format);
+	unsigned int *val;
+
+	if (!strcasecmp(name, "sample_rate")) {
+		val = &attr->samplerate;
+	} else if (!strcasecmp(name, "max_bitrate")) {
+		val = &attr->maxbitrate;
+	} else if (!strcasecmp(name, "dtx")) {
+		val = &attr->dtx;
+	} else if (!strcasecmp(name, "fec")) {
+		val = &attr->fec;
+	} else if (!strcasecmp(name, "packetloss_percentage")) {
+		val = &attr->packetloss_percentage;
+	} else {
+		ast_log(LOG_WARNING, "unknown attribute type %s\n", name);
+		return NULL;
+	}
+
+	return val;
+}
+
 static struct ast_format_interface silk_interface = {
 	.format_destroy = silk_destroy,
 	.format_clone = silk_clone,
 	.format_cmp = silk_cmp,
 	.format_get_joint = silk_getjoint,
 	.format_attribute_set = silk_set,
+	.format_attribute_get = silk_get,
 	.format_parse_sdp_fmtp = silk_parse_sdp_fmtp,
 	.format_generate_sdp_fmtp = silk_generate_sdp_fmtp,
 };